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

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.

Related

Cannot connect to my MongoDB using Compass tool after upgrading from 1.25 to 1.30

I get the below error message when I use a used-to-be working connection string to connect to my Mongo DB on the server.
This started happening after I upgraded my Compass from 1.25 v to 1.30 v.
I had to upgrade because the export collection feature was not exporting all the fields from the document
Error message:
Server at localhost:27017 reports maximum wire version 5, but this
version of the Node.js Driver requires at least 6 (MongoDB 3.6)
Please help as I use this to generate reports to check the app usage and various other user activity reports
I was able to fix this by downgrading to version 1.29.5:
https://github.com/mongodb-js/compass/releases/tag/v1.29.5
Also, disable automatic updates by going to Help -> Privacy Settings to avoid this happening again.
It seems that there is a breaking change starting at MongoDB Compass v1.29.6.
https://github.com/mongodb-js/compass/releases/tag/v1.29.6
There's this line:
dependencies: bump driver to 4.2.1, mongosh to 1.1.6
My guess is that going from mongodb driver 4.1.0 to 4.2.1 had a breaking change - might be related to this:
https://github.com/mongodb/node-mongodb-native/compare/v4.1.0...v4.2.1#diff-648afe3d986261d8f2015b2b131b0e4a448d4dc6946cfde1a7a836876cee255eR24

Data-Migration ElasticSearch 5.6.16 to 7.2.0

how can i perfom full data migration from ElasticSearch 5.6.16 to 7.2.0. I have an application running version 5.6.16. No i have to update some of the data to version 7.2.0. The manufacturer has written / provided an own tool for the migration, but this requires that the new installation (7.2.0) has been installed on a new separate server. But this is the only the last option for me. So what's an easy and good way to do this on the same machine? Or would it be an solution to install the new version (7.2.0) on the same machine with different port and then do my stuff as this would be two servers?
First backup the data and the re-import after installing new version? Did i get problems with the indexes (i read something about this.. that this could result in errors)
You have few questions but I will try to answer two important ones,
How can you run the two different version of elasticsearch on a single machine
Answer : it is possible although not recommended in production environment, as you guess it right, by running these two version on different ports.
How to migrate from ES 5.6 to 7.2
Answer: Elasticsearch provides the backward compatibility till last major version, so if you are upgrading to 7.X, than ES 6.X indices can be backed up and re-imported in ES 7.X but you can't do this for 5.X indices.
Note: Refer upgrade elasticsearch official doc for detailed explanation and process.

Scala version mismatch on Amazon EMR Flink

Trying to run Flink(v 1.7.0) job on Amazon EMR Flink(5.21.0).
I get the exception
java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V
The exception looks like SCALA version issue. I found flink libraries there is SCALA 2.11 and my job build using 2.12. Flink 1.7.0 supports SCALA 2.12.
The question is, how do I get Amazon EMR supporting SCALA 2.12 instead of 2.11? or Is there any better solution other my code going back 2.11.
EMR is using Flink 1.6.1, I believe. So that's the version you'd want to build your Flink workflow against.
There's a description here in the docs of how to manually install whatever version of Flink you want to use with EMR.

What version data store does Gremlin create when creating a Neo4j database from the console?

Im running Gremlin v 3.2.5, and I keep getting errors when i try to connect to a Neo4j database from the Gremlin console, or using the neo4j-gremlin API:
Failed to start Neo4j with an older data store version. To enable automatic upgrade, please set configuration parameter "allow_store_upgrade=true"
I create the Neo4j database using the neo4j-java-driver 1.4.3, and neo4j 3.2.3, like so in scala:
val graphDb = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder(new File(dbPath))
.setConfig(GraphDatabaseSettings.allow_store_upgrade, "true").newGraphDatabase()
or in the Gremlin console
gremlin> conf = new BaseConfiguration()
gremlin> conf.setProperty(Neo4jGraph.CONFIG_CONF + "dbms.allow_format_migration", "true")
gremlin> g = Neo4jGraph.open(conf)
So I would like to know what version datastore Gremlin uses because it doesn't seem to matter how I make the DB, I get errors like the one above. I believe my version of Neo4j creates a datastore v0.A.8, and the only thing I haven't tried, which may work, is downgrading my version of Neo4j. Thanks in advance for any Ideas/feedback!
*edit: gave wrong version number of neo4j-java-driver, added neo4j version
tldr; Apache TinkerPop 3.2.5 is tested to work with Neo4j 2.3.3.
It's worth noting that there is no direct or default dependency on Neo4j for Apache TinkerPop, given the GPL licensing of Neo4j which conflicts with the Apache license. So there is a bit of indirection involved in determining the version to deal with. Technically, TinkerPop leaves it to the user to choose the version of Neo4j to use by selecting a version of neo4j-tinkerpop-api-impl:
https://github.com/neo4j-contrib/neo4j-tinkerpop-api-impl
that is compatible with the version of neo4j-tinkerpop-api
https://github.com/neo4j-contrib/neo4j-tinkerpop-api
that is used with the version of TinkerPop that you are using. In the case of 3.2.5, that would be:
https://github.com/apache/tinkerpop/blob/3.2.5/neo4j-gremlin/pom.xml#L41
While you are technically free to choose a version of neo4j-tinkerpop-api-impl it's worth noting that TinkerPop 3.2.5 is only tested against 0.3-2.3.3 which is hooked to Neo4j 2.3.3:
https://github.com/neo4j-contrib/neo4j-tinkerpop-api-impl/blob/0.3-2.3.3/pom.xml#L23

Why is SQLServerDriver gone from Slick 2.0.0-M3 to Slick 2.0.0?

I was using Slick 2.0.0-M3 in my project and just upgraded to Slick 2.0.0
ScalaDoc (2.0.0-M3): http://slick.typesafe.com/doc/2.0.0-M3/api/index.html#package
SaclaDoc (2.0.0): http://slick.typesafe.com/doc/2.0.0/api/#package
In the former, the SQLServerDriver Trait is available, whereas in the latter it is gone. Can someone tell me where to optain it again?
Support for non-open-source databases including SQL Server is available as part of the commercial slick-extensions offered by Typesafe. More info here: http://slick.typesafe.com/doc/2.0.0/extensions.html
As of Slick 2.0.0, the SQL Server driver (being a non-open-source database) is not open source any more.
Also you may want to check Freeslick

Resources