Skip to content

Problems with Version 1.2 - support for Mongo 3.0 #146

@mantithetical

Description

@mantithetical

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)

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions