在将 scalatest-embedMongo 与 reactivemongo scala 驱动程序版本 0.11.5 一起使用时,Future[WriteResult] 因 ArrayOutOfBounds 异常而失败

Future[WriteResult] is Failing with ArrayOutOfBounds exception while using scalatest-embedMongo with reactivemongo scala driver version 0.11.5

我正在使用 scalatest-embedMongo as In-memory version of mongoDB for a Scala application. I have currently upgraded my reactivemongo driver from version 0.10.x to version 0.11.5. The scalatest-embedMongo 与以前版本的反应式 mongo scala 驱动程序一起工作正常但是,使用升级版本的反应式 mongo 驱动程序,WriteResult Future 总是返回包含来自 reactiveMongo 驱动程序 API 的 ArrayIndexOutOfBounds 的故障。我对这个新的例外感到困惑。

这里是整个堆栈跟踪:

java.lang.ArrayIndexOutOfBoundsException: 123
at org.jboss.netty.buffer.LittleEndianHeapChannelBuffer.getInt(LittleEndianHeapChannelBuffer.java:69)
at reactivemongo.api.SerializationPack$class.readAndDeserialize(serializationpack.scala:31)
at reactivemongo.api.BSONSerializationPack$.readAndDeserialize(serializationpack.scala:41)
at reactivemongo.api.collections.GenericCollection$$anonfun$update$$anonfun$apply.apply(genericcollection.scala:314)
at reactivemongo.api.collections.GenericCollection$$anonfun$update$$anonfun$apply.apply(genericcollection.scala:313)
at scala.util.Success$$anonfun$map.apply(Try.scala:206)
at scala.util.Try$.apply(Try.scala:161)
at scala.util.Success.map(Try.scala:206)
at scala.concurrent.Future$$anonfun$map.apply(Future.scala:235)
at scala.concurrent.Future$$anonfun$map.apply(Future.scala:235)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
at scala.concurrent.impl.ExecutionContextImpl$$anon.exec(ExecutionContextImpl.scala:107)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

提前致谢!!

首先, Scalatest embed mongo 不是为在生产环境中嵌入 mongo 而设计的(事实上它没有为此进行测试)但如果它对你有用我没问题。

其次, 如果我记得,使用的 mongo 数据库的版本与 reactivemongo version 有重要关系。 当您启动 EmbedMongo 实例时,您设置什么 MongoDb 版本? 默认情况下,设置的是2.4.8(我确实花时间更新代码)并且驱动程序不支持它。