I am using 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 was working fine with the previous version of reactive mongo scala driver but, with the upgraded version of reactive mongo driver, The WriteResult Future is always returning with a Failure containing ArrayIndexOutOfBounds sourcing from the reactiveMongo driver API. I am puzzled with this new exception.
Here goes the entire stack trace:
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)
Thanks in advance!!
First, Scalatest embed mongo is not design to embed mongo in production (in fact it is not tested for that) but if it work for you i'm ok.
Second, If I remember, the version of mongo db used is important related with reactivemongo version. What MongoDb version do you set when you start a EmbedMongo instance ? By default, is is 2.4.8 that was set (I do invest time to update code) and it is not supported by the driver.