代码之家  ›  专栏  ›  技术社区  ›  Manish Mishra

Future[WriteResult]在使用scalatest embedMongo和reactivemongo scala驱动程序版本0.11.5时失败,出现ArrayOutOfBounds异常

  •  2
  • Manish Mishra  · 技术社区  · 10 年前

    我正在使用 scalatest-embedMongo 作为Scala应用程序的内存版本mongoDB。我目前已将我的reactivemongo驱动程序从0.10.x版本升级到0.11.5版本 scalatest嵌入式Mongo 以前版本的反应式mongo scala驱动程序运行良好,但随着反应式mongodriver的升级版本,WriteResult Future总是返回包含来自反应式mongo驱动程序API的ArrayIndexOutOfBounds的Failure。我对这个新的例外感到困惑。

    下面是整个堆栈跟踪:

    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$1$$anonfun$apply$14.apply(genericcollection.scala:314)
    at reactivemongo.api.collections.GenericCollection$$anonfun$update$1$$anonfun$apply$14.apply(genericcollection.scala:313)
    at scala.util.Success$$anonfun$map$1.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$1.apply(Future.scala:235)
    at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
    at scala.concurrent.impl.ExecutionContextImpl$$anon$3.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)
    

    提前感谢!!

    1 回复  |  直到 10 年前
        1
  •  1
  •   user1095769    10 年前

    第一 Scalatest嵌入mongo并不是为了在生产中嵌入mongo而设计的(事实上,它并没有为此进行测试),但如果它适用于您,我没问题。

    第二 如果我记得的话,所使用的mongodb版本与 reactivemongo version . 启动EmbedMongo实例时,您设置了哪个MongoDb版本? 默认情况下,设置的是2.4.8(我确实花费了时间来更新代码),驱动程序不支持它。