Index: oak-parent/pom.xml
===================================================================
--- oak-parent/pom.xml (revision 1845136)
+++ oak-parent/pom.xml (working copy)
@@ -53,7 +53,7 @@
SegmentMK
4.7.1
5.5.5
- 3.6.4
+ 3.8.2
1.7.25
1.7.25
1.2.3
Index: oak-store-document/pom.xml
===================================================================
--- oak-store-document/pom.xml (revision 1845136)
+++ oak-store-document/pom.xml (working copy)
@@ -40,7 +40,7 @@
${guava.osgi.import},
- com.mongodb*;version="[3.6, 4)";resolution:=optional,
+ com.mongodb*;version="[3.8, 4)";resolution:=optional,
*
Index: oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
===================================================================
--- oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java (revision 1845136)
+++ oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java (working copy)
@@ -88,6 +88,7 @@
import com.mongodb.bulk.BulkWriteError;
import com.mongodb.bulk.BulkWriteResult;
import com.mongodb.bulk.BulkWriteUpsert;
+import com.mongodb.client.ClientSession;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
@@ -101,7 +102,6 @@
import com.mongodb.client.model.WriteModel;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
-import com.mongodb.session.ClientSession;
import static com.google.common.base.Predicates.in;
import static com.google.common.base.Predicates.not;
@@ -1864,9 +1864,9 @@
MongoCollection> c = nodes.withReadPreference(ReadPreference.primary());
long count;
if (session != null) {
- count = c.count(session);
+ count = c.countDocuments(session);
} else {
- count = c.count();
+ count = c.countDocuments();
}
return count;
});
Index: oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoSessionFactory.java
===================================================================
--- oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoSessionFactory.java (revision 1845136)
+++ oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoSessionFactory.java (working copy)
@@ -18,11 +18,13 @@
import com.mongodb.ClientSessionOptions;
import com.mongodb.MongoClient;
-import com.mongodb.session.ClientSession;
+import com.mongodb.TransactionOptions;
+import com.mongodb.client.ClientSession;
import com.mongodb.session.ServerSession;
import org.bson.BsonDocument;
import org.bson.BsonTimestamp;
+import org.jetbrains.annotations.NotNull;
/**
* Factory for {@link ClientSession}s.
@@ -101,6 +103,42 @@
}
@Override
+ public boolean hasActiveTransaction() {
+ return session.hasActiveTransaction();
+ }
+
+ @Override
+ public boolean notifyMessageSent() {
+ return session.notifyMessageSent();
+ }
+
+ @NotNull
+ @Override
+ public TransactionOptions getTransactionOptions() {
+ return session.getTransactionOptions();
+ }
+
+ @Override
+ public void startTransaction() {
+ session.startTransaction();
+ }
+
+ @Override
+ public void startTransaction(@NotNull TransactionOptions options) {
+ session.startTransaction(options);
+ }
+
+ @Override
+ public void commitTransaction() {
+ session.commitTransaction();
+ }
+
+ @Override
+ public void abortTransaction() {
+ session.abortTransaction();
+ }
+
+ @Override
public void close() {
synchronized (this) {
session.advanceClusterTime(clusterTime);
Index: oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java
===================================================================
--- oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java (revision 1845136)
+++ oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java (working copy)
@@ -107,7 +107,7 @@
@Override
public long getDeletedOnceCount() {
Bson query = Filters.eq(DELETED_ONCE, Boolean.TRUE);
- return getNodeCollection().count(query);
+ return getNodeCollection().countDocuments(query);
}
@Override
Index: oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoTestCollection.java
===================================================================
--- oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoTestCollection.java (revision 1845136)
+++ oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoTestCollection.java (working copy)
@@ -27,6 +27,7 @@
import com.mongodb.bulk.BulkWriteResult;
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.ChangeStreamIterable;
+import com.mongodb.client.ClientSession;
import com.mongodb.client.DistinctIterable;
import com.mongodb.client.FindIterable;
import com.mongodb.client.ListIndexesIterable;
@@ -37,6 +38,7 @@
import com.mongodb.client.model.CreateIndexOptions;
import com.mongodb.client.model.DeleteOptions;
import com.mongodb.client.model.DropIndexOptions;
+import com.mongodb.client.model.EstimatedDocumentCountOptions;
import com.mongodb.client.model.FindOneAndDeleteOptions;
import com.mongodb.client.model.FindOneAndReplaceOptions;
import com.mongodb.client.model.FindOneAndUpdateOptions;
@@ -45,11 +47,11 @@
import com.mongodb.client.model.InsertManyOptions;
import com.mongodb.client.model.InsertOneOptions;
import com.mongodb.client.model.RenameCollectionOptions;
+import com.mongodb.client.model.ReplaceOptions;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.model.WriteModel;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
-import com.mongodb.session.ClientSession;
import org.bson.Document;
import org.bson.codecs.configuration.CodecRegistry;
@@ -179,6 +181,40 @@
return collection.count(clientSession, filter, options);
}
+ @Override
+ public long countDocuments() {
+ return collection.countDocuments();
+ }
+
+ @Override
+ public long countDocuments(@NotNull Bson filter) {
+ return collection.countDocuments(filter);
+ }
+
+ @Override
+ public long countDocuments(@NotNull Bson filter,
+ @NotNull CountOptions options) {
+ return collection.countDocuments(filter, options);
+ }
+
+ @Override
+ public long countDocuments(@NotNull ClientSession clientSession) {
+ return collection.countDocuments(clientSession);
+ }
+
+ @Override
+ public long countDocuments(@NotNull ClientSession clientSession,
+ @NotNull Bson filter) {
+ return collection.countDocuments(clientSession, filter);
+ }
+
+ @Override
+ public long countDocuments(@NotNull ClientSession clientSession,
+ @NotNull Bson filter,
+ @NotNull CountOptions options) {
+ return collection.countDocuments(clientSession, filter, options);
+ }
+
@NotNull
@Override
public DistinctIterable distinct(@NotNull String fieldName,
@@ -211,6 +247,16 @@
return collection.distinct(clientSession, fieldName, filter, tResultClass);
}
+ @Override
+ public long estimatedDocumentCount() {
+ return collection.estimatedDocumentCount();
+ }
+
+ @Override
+ public long estimatedDocumentCount(@NotNull EstimatedDocumentCountOptions options) {
+ return collection.estimatedDocumentCount(options);
+ }
+
@NotNull
@Override
public FindIterable find() {
@@ -610,6 +656,29 @@
@NotNull
@Override
+ public UpdateResult replaceOne(@NotNull Bson filter,
+ @NotNull TDocument replacement,
+ @NotNull ReplaceOptions replaceOptions) {
+ maybeThrowExceptionBeforeUpdate();
+ UpdateResult result = collection.replaceOne(filter, replacement, replaceOptions);
+ maybeThrowExceptionAfterUpdate();
+ return result;
+ }
+
+ @NotNull
+ @Override
+ public UpdateResult replaceOne(@NotNull ClientSession clientSession,
+ @NotNull Bson filter,
+ @NotNull TDocument replacement,
+ @NotNull ReplaceOptions replaceOptions) {
+ maybeThrowExceptionBeforeUpdate();
+ UpdateResult result = collection.replaceOne(clientSession, filter, replacement, replaceOptions);
+ maybeThrowExceptionAfterUpdate();
+ return result;
+ }
+
+ @NotNull
+ @Override
public UpdateResult updateOne(@NotNull Bson filter, @NotNull Bson update) {
maybeThrowExceptionBeforeUpdate();
UpdateResult result = collection.updateOne(filter, update);
Index: oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoTestDatabase.java
===================================================================
--- oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoTestDatabase.java (revision 1845136)
+++ oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoTestDatabase.java (working copy)
@@ -22,6 +22,8 @@
import com.mongodb.ReadConcern;
import com.mongodb.ReadPreference;
import com.mongodb.WriteConcern;
+import com.mongodb.client.ChangeStreamIterable;
+import com.mongodb.client.ClientSession;
import com.mongodb.client.ListCollectionsIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
@@ -28,7 +30,6 @@
import com.mongodb.client.MongoIterable;
import com.mongodb.client.model.CreateCollectionOptions;
import com.mongodb.client.model.CreateViewOptions;
-import com.mongodb.session.ClientSession;
import org.bson.Document;
import org.bson.codecs.configuration.CodecRegistry;
@@ -283,4 +284,57 @@
@NotNull CreateViewOptions createViewOptions) {
db.createView(clientSession, viewName, viewOn, pipeline, createViewOptions);
}
+
+ @NotNull
+ @Override
+ public ChangeStreamIterable watch() {
+ return db.watch();
+ }
+
+ @NotNull
+ @Override
+ public ChangeStreamIterable watch(@NotNull Class tResultClass) {
+ return db.watch(tResultClass);
+ }
+
+ @NotNull
+ @Override
+ public ChangeStreamIterable watch(@NotNull List extends Bson> pipeline) {
+ return db.watch(pipeline);
+ }
+
+ @NotNull
+ @Override
+ public ChangeStreamIterable watch(@NotNull List extends Bson> pipeline,
+ @NotNull Class tResultClass) {
+ return db.watch(pipeline, tResultClass);
+ }
+
+ @NotNull
+ @Override
+ public ChangeStreamIterable watch(@NotNull ClientSession clientSession) {
+ return db.watch(clientSession);
+ }
+
+ @NotNull
+ @Override
+ public ChangeStreamIterable watch(@NotNull ClientSession clientSession,
+ @NotNull Class tResultClass) {
+ return db.watch(clientSession, tResultClass);
+ }
+
+ @NotNull
+ @Override
+ public ChangeStreamIterable watch(@NotNull ClientSession clientSession,
+ @NotNull List extends Bson> pipeline) {
+ return db.watch(clientSession, pipeline);
+ }
+
+ @NotNull
+ @Override
+ public ChangeStreamIterable watch(@NotNull ClientSession clientSession,
+ @NotNull List extends Bson> pipeline,
+ @NotNull Class tResultClass) {
+ return db.watch(clientSession, pipeline, tResultClass);
+ }
}