-
-
Notifications
You must be signed in to change notification settings - Fork 389
Closed
Description
JaversBuilder.javers().registerJaversRepository(mongoRepo).build() throws
com.mongodb.CommandFailureException: { "serverUsed" : "myDb:27017" , "ok" : 0.0 , "errmsg" : "unauthorized"}
at com.mongodb.CommandResult.getException(CommandResult.java:76)
at com.mongodb.CommandResult.throwOnError(CommandResult.java:140)
at com.mongodb.DB.eval(DB.java:464)
at org.javers.repository.mongo.MongoRepository.ensureSchema(MongoRepository.java:139)
at org.javers.core.JaversBuilder.build(JaversBuilder.java:90)The root cause appears to be the unauthorized migration in ensureSchema:
//schema migration script from 1.1 to 1.2
BSONObject doc = snapshots.findOne();
if (doc != null) {
Object stringCommitId = ((Map)doc.get("commitMetadata")).get("id");
if (stringCommitId instanceof String) {
mongo.eval("db.jv_snapshots.find().forEach(function(snapshot){snapshot.commitMetadata.id = Number(snapshot.commitMetadata.id);db.jv_snapshots.save(snapshot);});");
}
}The eval method has been deprecated as of mongodb version 3.0
I bypassed this issue by running the migration manually. However, after the first commit, subsequents commits throw a class cast exception.
javers.commit(username, myObject) throws
Caused by: java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.String
at org.javers.core.metamodel.object.CdoSnapshotBuilder.withChangedProperties(CdoSnapshotBuilder.java:92)
at org.javers.core.json.typeadapter.commit.CdoSnapshotTypeAdapter.deserializeChangedProperties(CdoSnapshotTypeAdapter.java:68)
at org.javers.core.json.typeadapter.commit.CdoSnapshotTypeAdapter.fromJson(CdoSnapshotTypeAdapter.java:53)
at org.javers.core.json.typeadapter.commit.CdoSnapshotTypeAdapter.fromJson(CdoSnapshotTypeAdapter.java:22)
at org.javers.core.json.JsonConverterBuilder$2.deserialize(JsonConverterBuilder.java:139)Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels