diff --git a/driver-core/src/main/com/mongodb/internal/operation/AbortTransactionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AbortTransactionOperation.java
index 52006c1177a..b3b32b919cc 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AbortTransactionOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AbortTransactionOperation.java
@@ -18,7 +18,6 @@
import com.mongodb.Function;
import com.mongodb.WriteConcern;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.lang.Nullable;
import org.bson.BsonDocument;
@@ -32,8 +31,8 @@
public class AbortTransactionOperation extends TransactionOperation {
private BsonDocument recoveryToken;
- public AbortTransactionOperation(final TimeoutSettings timeoutSettings, final WriteConcern writeConcern) {
- super(timeoutSettings, writeConcern);
+ public AbortTransactionOperation(final WriteConcern writeConcern) {
+ super(writeConcern);
}
public AbortTransactionOperation recoveryToken(@Nullable final BsonDocument recoveryToken) {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AbstractWriteSearchIndexOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AbstractWriteSearchIndexOperation.java
index b0b6d63f69c..07bf7037b55 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AbstractWriteSearchIndexOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AbstractWriteSearchIndexOperation.java
@@ -19,7 +19,6 @@
import com.mongodb.MongoCommandException;
import com.mongodb.MongoNamespace;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncWriteBinding;
import com.mongodb.internal.binding.WriteBinding;
@@ -39,19 +38,12 @@
*
This class is not part of the public API and may be removed or changed at any time
*/
abstract class AbstractWriteSearchIndexOperation implements AsyncWriteOperation, WriteOperation {
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
- AbstractWriteSearchIndexOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace) {
- this.timeoutSettings = timeoutSettings;
+ AbstractWriteSearchIndexOperation(final MongoNamespace namespace) {
this.namespace = namespace;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public Void execute(final WriteBinding binding) {
return withConnection(binding, connection -> {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AggregateOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AggregateOperation.java
index e6f64665666..07943560b40 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AggregateOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AggregateOperation.java
@@ -20,7 +20,6 @@
import com.mongodb.MongoNamespace;
import com.mongodb.client.cursor.TimeoutMode;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.AsyncBatchCursor;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
@@ -44,14 +43,13 @@
public class AggregateOperation implements AsyncExplainableReadOperation>, ExplainableReadOperation> {
private final AggregateOperationImpl wrapped;
- public AggregateOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final List pipeline, final Decoder decoder) {
- this(timeoutSettings, namespace, pipeline, decoder, AggregationLevel.COLLECTION);
+ public AggregateOperation(final MongoNamespace namespace, final List pipeline, final Decoder decoder) {
+ this(namespace, pipeline, decoder, AggregationLevel.COLLECTION);
}
- public AggregateOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final List pipeline, final Decoder decoder, final AggregationLevel aggregationLevel) {
- this.wrapped = new AggregateOperationImpl<>(timeoutSettings, namespace, pipeline, decoder, aggregationLevel);
+ public AggregateOperation(final MongoNamespace namespace, final List pipeline, final Decoder decoder,
+ final AggregationLevel aggregationLevel) {
+ this.wrapped = new AggregateOperationImpl<>(namespace, pipeline, decoder, aggregationLevel);
}
public List getPipeline() {
@@ -131,11 +129,6 @@ public AggregateOperation hint(@Nullable final BsonValue hint) {
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return wrapped.getTimeoutSettings();
- }
-
public AggregateOperation timeoutMode(@Nullable final TimeoutMode timeoutMode) {
wrapped.timeoutMode(timeoutMode);
return this;
@@ -161,7 +154,7 @@ public AsyncReadOperation asAsyncExplainableOperation(@Nullable final Exp
}
CommandReadOperation createExplainableOperation(@Nullable final ExplainVerbosity verbosity, final Decoder resultDecoder) {
- return new CommandReadOperation<>(wrapped.getTimeoutSettings(), getNamespace().getDatabaseName(),
+ return new CommandReadOperation<>(getNamespace().getDatabaseName(),
(operationContext, serverDescription, connectionDescription) ->
asExplainCommand(wrapped.getCommand(operationContext, MIN_WIRE_VERSION), verbosity), resultDecoder);
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AggregateOperationImpl.java b/driver-core/src/main/com/mongodb/internal/operation/AggregateOperationImpl.java
index 77338afd3b1..0edc474d9da 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AggregateOperationImpl.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AggregateOperationImpl.java
@@ -19,7 +19,6 @@
import com.mongodb.MongoNamespace;
import com.mongodb.client.cursor.TimeoutMode;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.AsyncBatchCursor;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
@@ -55,7 +54,6 @@ class AggregateOperationImpl implements AsyncReadOperation FIELD_NAMES_WITH_RESULT = Arrays.asList(RESULT, FIRST_BATCH);
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final List pipeline;
private final Decoder decoder;
@@ -71,18 +69,17 @@ class AggregateOperationImpl implements AsyncReadOperation pipeline, final Decoder decoder, final AggregationLevel aggregationLevel) {
- this(timeoutSettings, namespace, pipeline, decoder,
+ this(namespace, pipeline, decoder,
defaultAggregateTarget(notNull("aggregationLevel", aggregationLevel),
notNull("namespace", namespace).getCollectionName()),
defaultPipelineCreator(pipeline));
}
- AggregateOperationImpl(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
+ AggregateOperationImpl(final MongoNamespace namespace,
final List pipeline, final Decoder decoder, final AggregateTarget aggregateTarget,
final PipelineCreator pipelineCreator) {
- this.timeoutSettings = timeoutSettings;
this.namespace = notNull("namespace", namespace);
this.pipeline = notNull("pipeline", pipeline);
this.decoder = notNull("decoder", decoder);
@@ -158,13 +155,7 @@ BsonValue getHint() {
return hint;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
public AggregateOperationImpl timeoutMode(@Nullable final TimeoutMode timeoutMode) {
- isTrueArgument("timeoutMode requires timeoutMS.", timeoutMode == null || timeoutSettings.getTimeoutMS() != null);
if (timeoutMode != null) {
this.timeoutMode = timeoutMode;
}
@@ -229,14 +220,14 @@ BsonDocument getCommand(final OperationContext operationContext, final int maxWi
private CommandReadTransformer> transformer() {
return (result, source, connection) ->
- new CommandBatchCursor<>(getTimeoutMode(), result, batchSize != null ? batchSize : 0, getMaxTimeForCursor(), decoder,
- comment, source, connection);
+ new CommandBatchCursor<>(getTimeoutMode(), result, batchSize != null ? batchSize : 0,
+ getMaxTimeForCursor(source.getOperationContext()), decoder, comment, source, connection);
}
private CommandReadTransformerAsync> asyncTransformer() {
return (result, source, connection) ->
- new AsyncCommandBatchCursor<>(getTimeoutMode(), result, batchSize != null ? batchSize : 0, getMaxTimeForCursor(), decoder,
- comment, source, connection);
+ new AsyncCommandBatchCursor<>(getTimeoutMode(), result, batchSize != null ? batchSize : 0,
+ getMaxTimeForCursor(source.getOperationContext()), decoder, comment, source, connection);
}
private TimeoutMode getTimeoutMode() {
@@ -247,8 +238,8 @@ private TimeoutMode getTimeoutMode() {
return localTimeoutMode;
}
- private long getMaxTimeForCursor() {
- return timeoutSettings.getMaxAwaitTimeMS();
+ private long getMaxTimeForCursor(final OperationContext operationContext) {
+ return operationContext.getTimeoutContext().getMaxAwaitTimeMS();
}
interface AggregateTarget {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AggregateToCollectionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AggregateToCollectionOperation.java
index 1654cbd5aaa..ae0f8de10cd 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AggregateToCollectionOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AggregateToCollectionOperation.java
@@ -22,7 +22,6 @@
import com.mongodb.WriteConcern;
import com.mongodb.client.cursor.TimeoutMode;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
import com.mongodb.internal.binding.ReadBinding;
@@ -57,7 +56,6 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public class AggregateToCollectionOperation implements AsyncReadOperation, ReadOperation {
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final List pipeline;
private final WriteConcern writeConcern;
@@ -71,15 +69,13 @@ public class AggregateToCollectionOperation implements AsyncReadOperation,
private BsonValue hint;
private BsonDocument variables;
- public AggregateToCollectionOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final List pipeline, final ReadConcern readConcern, final WriteConcern writeConcern) {
- this(timeoutSettings, namespace, pipeline, readConcern, writeConcern, AggregationLevel.COLLECTION);
+ public AggregateToCollectionOperation(final MongoNamespace namespace, final List pipeline, final ReadConcern readConcern,
+ final WriteConcern writeConcern) {
+ this(namespace, pipeline, readConcern, writeConcern, AggregationLevel.COLLECTION);
}
- public AggregateToCollectionOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final List pipeline, @Nullable final ReadConcern readConcern, @Nullable final WriteConcern writeConcern,
- final AggregationLevel aggregationLevel) {
- this.timeoutSettings = timeoutSettings;
+ public AggregateToCollectionOperation(final MongoNamespace namespace, final List pipeline,
+ @Nullable final ReadConcern readConcern, @Nullable final WriteConcern writeConcern, final AggregationLevel aggregationLevel) {
this.namespace = notNull("namespace", namespace);
this.pipeline = notNull("pipeline", pipeline);
this.writeConcern = writeConcern;
@@ -156,11 +152,6 @@ public AggregateToCollectionOperation timeoutMode(@Nullable final TimeoutMode ti
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public Void execute(final ReadBinding binding) {
return executeRetryableRead(binding,
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AsyncOperations.java b/driver-core/src/main/com/mongodb/internal/operation/AsyncOperations.java
index 28141f1ff02..5f6e3c9fbb9 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AsyncOperations.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AsyncOperations.java
@@ -62,18 +62,21 @@
import java.util.List;
import static com.mongodb.assertions.Assertions.assertNotNull;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
/**
* This class is not part of the public API and may be removed or changed at any time
*/
public final class AsyncOperations {
private final Operations operations;
+ private final TimeoutSettings timeoutSettings;
public AsyncOperations(final MongoNamespace namespace, final Class documentClass, final ReadPreference readPreference,
final CodecRegistry codecRegistry, final ReadConcern readConcern, final WriteConcern writeConcern,
final boolean retryWrites, final boolean retryReads, final TimeoutSettings timeoutSettings) {
this.operations = new Operations<>(namespace, documentClass, readPreference, codecRegistry, readConcern, writeConcern,
- retryWrites, retryReads, timeoutSettings);
+ retryWrites, retryReads);
+ this.timeoutSettings = timeoutSettings;
}
public MongoNamespace getNamespace() {
@@ -100,6 +103,10 @@ public WriteConcern getWriteConcern() {
return operations.getWriteConcern();
}
+ public TimeoutSettings getTimeoutSettings() {
+ return timeoutSettings;
+ }
+
public boolean isRetryWrites() {
return operations.isRetryWrites();
}
@@ -108,8 +115,42 @@ public boolean isRetryReads() {
return operations.isRetryReads();
}
- public TimeoutSettings getTimeoutSettings() {
- return operations.getTimeoutSettings();
+ public TimeoutSettings createTimeoutSettings(final long maxTimeMS) {
+ return timeoutSettings.withMaxTimeMS(maxTimeMS);
+ }
+
+ public TimeoutSettings createTimeoutSettings(final long maxTimeMS, final long maxAwaitTimeMS) {
+ return timeoutSettings.withMaxTimeAndMaxAwaitTimeMS(maxTimeMS, maxAwaitTimeMS);
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final CountOptions options) {
+ return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final EstimatedDocumentCountOptions options) {
+ return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final FindOptions options) {
+ return timeoutSettings.withMaxTimeAndMaxAwaitTimeMS(options.getMaxTime(MILLISECONDS), options.getMaxAwaitTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final FindOneAndDeleteOptions options) {
+ return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final FindOneAndReplaceOptions options) {
+ return createTimeoutSettings(options.getMaxTime(MILLISECONDS));
+ }
+
+ @SuppressWarnings("deprecation") // MaxTime
+ public TimeoutSettings createTimeoutSettings(final FindOneAndUpdateOptions options) {
+ return timeoutSettings.withMaxTimeMS(options.getMaxTime(MILLISECONDS));
}
public AsyncReadOperation countDocuments(final Bson filter, final CountOptions options) {
@@ -136,14 +177,13 @@ public AsyncReadOperation> find(final MongoN
}
public AsyncReadOperation> distinct(final String fieldName, final Bson filter,
- final Class resultClass, final long maxTimeMS,
- final Collation collation, final BsonValue comment) {
- return operations.distinct(fieldName, filter, resultClass, maxTimeMS, collation, comment);
+ final Class resultClass, final Collation collation, final BsonValue comment) {
+ return operations.distinct(fieldName, filter, resultClass, collation, comment);
}
- public AsyncExplainableReadOperation> aggregate(final List extends Bson> pipeline,
+ public AsyncExplainableReadOperation> aggregate(
+ final List extends Bson> pipeline,
final Class resultClass,
- final long maxTimeMS, final long maxAwaitTimeMS,
@Nullable final TimeoutMode timeoutMode,
@Nullable final Integer batchSize,
final Collation collation, final Bson hint,
@@ -152,15 +192,15 @@ public AsyncExplainableReadOperation> aggreg
final Bson variables,
final Boolean allowDiskUse,
final AggregationLevel aggregationLevel) {
- return operations.aggregate(pipeline, resultClass, maxTimeMS, maxAwaitTimeMS, timeoutMode, batchSize, collation, hint, hintString,
+ return operations.aggregate(pipeline, resultClass, timeoutMode, batchSize, collation, hint, hintString,
comment, variables, allowDiskUse, aggregationLevel);
}
- public AsyncReadOperation aggregateToCollection(final List extends Bson> pipeline, final long maxTimeMS,
+ public AsyncReadOperation aggregateToCollection(final List extends Bson> pipeline,
@Nullable final TimeoutMode timeoutMode, final Boolean allowDiskUse, final Boolean bypassDocumentValidation,
final Collation collation, final Bson hint, final String hintString, final BsonValue comment,
final Bson variables, final AggregationLevel aggregationLevel) {
- return operations.aggregateToCollection(pipeline, maxTimeMS, timeoutMode, allowDiskUse, bypassDocumentValidation, collation, hint,
+ return operations.aggregateToCollection(pipeline, timeoutMode, allowDiskUse, bypassDocumentValidation, collation, hint,
hintString, comment, variables, aggregationLevel);
}
@@ -168,21 +208,21 @@ public AsyncReadOperation aggregateToCollection(final List extends Bson>
public AsyncWriteOperation mapReduceToCollection(final String databaseName, final String collectionName,
final String mapFunction, final String reduceFunction,
final String finalizeFunction, final Bson filter, final int limit,
- final long maxTimeMS, final boolean jsMode, final Bson scope,
+ final boolean jsMode, final Bson scope,
final Bson sort, final boolean verbose,
final com.mongodb.client.model.MapReduceAction action,
final Boolean bypassDocumentValidation, final Collation collation) {
return operations.mapReduceToCollection(databaseName, collectionName, mapFunction, reduceFunction, finalizeFunction, filter, limit,
- maxTimeMS, jsMode, scope, sort, verbose, action, bypassDocumentValidation, collation);
+ jsMode, scope, sort, verbose, action, bypassDocumentValidation, collation);
}
public AsyncReadOperation> mapReduce(final String mapFunction, final String reduceFunction,
final String finalizeFunction, final Class resultClass,
final Bson filter, final int limit,
- final long maxTimeMS, final boolean jsMode, final Bson scope,
+ final boolean jsMode, final Bson scope,
final Bson sort, final boolean verbose,
final Collation collation) {
- return operations.mapReduce(mapFunction, reduceFunction, finalizeFunction, resultClass, filter, limit, maxTimeMS, jsMode, scope,
+ return operations.mapReduce(mapFunction, reduceFunction, finalizeFunction, resultClass, filter, limit, jsMode, scope,
sort, verbose, collation);
}
@@ -295,14 +335,9 @@ public AsyncWriteOperation dropSearchIndex(final String indexName) {
}
public AsyncExplainableReadOperation> listSearchIndexes(final Class resultClass,
- final long maxTimeMS,
- @Nullable final String indexName,
- @Nullable final Integer batchSize,
- @Nullable final Collation collation,
- @Nullable final BsonValue comment,
- @Nullable final Boolean allowDiskUse) {
- return operations.listSearchIndexes(resultClass, maxTimeMS, indexName, batchSize, collation,
- comment, allowDiskUse);
+ @Nullable final String indexName, @Nullable final Integer batchSize, @Nullable final Collation collation,
+ @Nullable final BsonValue comment, @Nullable final Boolean allowDiskUse) {
+ return operations.listSearchIndexes(resultClass, indexName, batchSize, collation, comment, allowDiskUse);
}
public AsyncWriteOperation dropIndex(final String indexName, final DropIndexOptions options) {
@@ -315,27 +350,27 @@ public AsyncWriteOperation dropIndex(final Bson keys, final DropIndexOptio
public AsyncReadOperation> listCollections(final String databaseName,
final Class resultClass, final Bson filter, final boolean collectionNamesOnly, final boolean authorizedCollections,
- @Nullable final Integer batchSize, final long maxTimeMS, final BsonValue comment, @Nullable final TimeoutMode timeoutMode) {
+ @Nullable final Integer batchSize, final BsonValue comment, @Nullable final TimeoutMode timeoutMode) {
return operations.listCollections(databaseName, resultClass, filter, collectionNamesOnly, authorizedCollections,
- batchSize, maxTimeMS, comment, timeoutMode);
+ batchSize, comment, timeoutMode);
}
public AsyncReadOperation> listDatabases(final Class resultClass, final Bson filter,
- final Boolean nameOnly, final long maxTimeMS, final Boolean authorizedDatabases, final BsonValue comment) {
- return operations.listDatabases(resultClass, filter, nameOnly, maxTimeMS, authorizedDatabases, comment);
+ final Boolean nameOnly, final Boolean authorizedDatabases, final BsonValue comment) {
+ return operations.listDatabases(resultClass, filter, nameOnly, authorizedDatabases, comment);
}
public AsyncReadOperation> listIndexes(final Class resultClass,
- @Nullable final Integer batchSize, final long maxTimeMS, final BsonValue comment, @Nullable final TimeoutMode timeoutMode) {
- return operations.listIndexes(resultClass, batchSize, maxTimeMS, comment, timeoutMode);
+ @Nullable final Integer batchSize, final BsonValue comment, @Nullable final TimeoutMode timeoutMode) {
+ return operations.listIndexes(resultClass, batchSize, comment, timeoutMode);
}
public AsyncReadOperation> changeStream(final FullDocument fullDocument,
final FullDocumentBeforeChange fullDocumentBeforeChange, final List extends Bson> pipeline,
final Decoder decoder, final ChangeStreamLevel changeStreamLevel, final Integer batchSize, final Collation collation,
- final BsonValue comment, final long maxAwaitTimeMS, final BsonDocument resumeToken, final BsonTimestamp startAtOperationTime,
+ final BsonValue comment, final BsonDocument resumeToken, final BsonTimestamp startAtOperationTime,
final BsonDocument startAfter, final boolean showExpandedEvents) {
return operations.changeStream(fullDocument, fullDocumentBeforeChange, pipeline, decoder, changeStreamLevel, batchSize,
- collation, comment, maxAwaitTimeMS, resumeToken, startAtOperationTime, startAfter, showExpandedEvents);
+ collation, comment, resumeToken, startAtOperationTime, startAfter, showExpandedEvents);
}
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AsyncReadOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AsyncReadOperation.java
index 324e7c5132a..75b18f5cb00 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AsyncReadOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AsyncReadOperation.java
@@ -16,7 +16,6 @@
package com.mongodb.internal.operation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
@@ -29,11 +28,6 @@
*/
public interface AsyncReadOperation {
- /**
- * @return the timeout settings for this operation
- */
- TimeoutSettings getTimeoutSettings();
-
/**
* General execute which can return anything of type T
*
diff --git a/driver-core/src/main/com/mongodb/internal/operation/AsyncWriteOperation.java b/driver-core/src/main/com/mongodb/internal/operation/AsyncWriteOperation.java
index 460a02a8be1..334c3bde8ac 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/AsyncWriteOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/AsyncWriteOperation.java
@@ -16,7 +16,6 @@
package com.mongodb.internal.operation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncWriteBinding;
@@ -29,11 +28,6 @@
*/
public interface AsyncWriteOperation {
- /**
- * @return the timeout settings for this operation
- */
- TimeoutSettings getTimeoutSettings();
-
/**
* General execute which can return anything of type T
*
diff --git a/driver-core/src/main/com/mongodb/internal/operation/BaseFindAndModifyOperation.java b/driver-core/src/main/com/mongodb/internal/operation/BaseFindAndModifyOperation.java
index 57687fcf528..e5c8f2710fd 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/BaseFindAndModifyOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/BaseFindAndModifyOperation.java
@@ -20,7 +20,6 @@
import com.mongodb.WriteConcern;
import com.mongodb.client.model.Collation;
import com.mongodb.connection.ConnectionDescription;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncWriteBinding;
import com.mongodb.internal.binding.WriteBinding;
@@ -49,7 +48,6 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public abstract class BaseFindAndModifyOperation implements AsyncWriteOperation, WriteOperation {
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final WriteConcern writeConcern;
private final boolean retryWrites;
@@ -64,9 +62,8 @@ public abstract class BaseFindAndModifyOperation implements AsyncWriteOperati
private BsonValue comment;
private BsonDocument variables;
- protected BaseFindAndModifyOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final WriteConcern writeConcern, final boolean retryWrites, final Decoder decoder) {
- this.timeoutSettings = timeoutSettings;
+ protected BaseFindAndModifyOperation(final MongoNamespace namespace, final WriteConcern writeConcern, final boolean retryWrites,
+ final Decoder decoder) {
this.namespace = notNull("namespace", namespace);
this.writeConcern = notNull("writeConcern", writeConcern);
this.retryWrites = retryWrites;
@@ -181,11 +178,6 @@ public BaseFindAndModifyOperation let(@Nullable final BsonDocument variables)
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
protected abstract FieldNameValidator getFieldNameValidator();
protected abstract void specializeCommand(BsonDocument initialCommand, ConnectionDescription connectionDescription);
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ChangeStreamOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ChangeStreamOperation.java
index b76b0a1867d..0afc4c5f1d0 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ChangeStreamOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ChangeStreamOperation.java
@@ -20,7 +20,6 @@
import com.mongodb.client.model.Collation;
import com.mongodb.client.model.changestream.FullDocument;
import com.mongodb.client.model.changestream.FullDocumentBeforeChange;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.AsyncBatchCursor;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
@@ -63,17 +62,16 @@ public class ChangeStreamOperation implements AsyncReadOperation pipeline, final Decoder decoder) {
- this(timeoutSettings, namespace, fullDocument, fullDocumentBeforeChange, pipeline, decoder, ChangeStreamLevel.COLLECTION);
+ public ChangeStreamOperation(final MongoNamespace namespace, final FullDocument fullDocument,
+ final FullDocumentBeforeChange fullDocumentBeforeChange, final List pipeline, final Decoder decoder) {
+ this(namespace, fullDocument, fullDocumentBeforeChange, pipeline, decoder, ChangeStreamLevel.COLLECTION);
}
- public ChangeStreamOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final FullDocument fullDocument, final FullDocumentBeforeChange fullDocumentBeforeChange, final List pipeline,
- final Decoder decoder, final ChangeStreamLevel changeStreamLevel) {
- this.wrapped = new AggregateOperationImpl<>(timeoutSettings, namespace, pipeline, RAW_BSON_DOCUMENT_CODEC,
- getAggregateTarget(), getPipelineCreator());
+ public ChangeStreamOperation(final MongoNamespace namespace, final FullDocument fullDocument,
+ final FullDocumentBeforeChange fullDocumentBeforeChange, final List pipeline, final Decoder decoder,
+ final ChangeStreamLevel changeStreamLevel) {
+ this.wrapped = new AggregateOperationImpl<>(namespace, pipeline, RAW_BSON_DOCUMENT_CODEC, getAggregateTarget(),
+ getPipelineCreator());
this.fullDocument = notNull("fullDocument", fullDocument);
this.fullDocumentBeforeChange = notNull("fullDocumentBeforeChange", fullDocumentBeforeChange);
this.decoder = notNull("decoder", decoder);
@@ -169,11 +167,6 @@ public ChangeStreamOperation showExpandedEvents(final boolean showExpandedEve
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return wrapped.getTimeoutSettings();
- }
-
@Override
public BatchCursor execute(final ReadBinding binding) {
CommandBatchCursor cursor = (CommandBatchCursor) wrapped.execute(binding);
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java
index a8b1674b362..ea89dfb303e 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CommandReadOperation.java
@@ -16,7 +16,6 @@
package com.mongodb.internal.operation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
import com.mongodb.internal.binding.ReadBinding;
@@ -34,29 +33,20 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public class CommandReadOperation implements AsyncReadOperation, ReadOperation {
- private final TimeoutSettings timeoutSettings;
private final String databaseName;
private final CommandCreator commandCreator;
private final Decoder decoder;
- public CommandReadOperation(final TimeoutSettings timeoutSettings, final String databaseName,
- final BsonDocument command, final Decoder decoder) {
- this(timeoutSettings, databaseName, (operationContext, serverDescription, connectionDescription) -> command, decoder);
+ public CommandReadOperation(final String databaseName, final BsonDocument command, final Decoder decoder) {
+ this(databaseName, (operationContext, serverDescription, connectionDescription) -> command, decoder);
}
- public CommandReadOperation(final TimeoutSettings timeoutSettings, final String databaseName,
- final CommandCreator commandCreator, final Decoder decoder) {
- this.timeoutSettings = timeoutSettings;
+ public CommandReadOperation(final String databaseName, final CommandCreator commandCreator, final Decoder decoder) {
this.databaseName = notNull("databaseName", databaseName);
this.commandCreator = notNull("commandCreator", commandCreator);
this.decoder = notNull("decoder", decoder);
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public T execute(final ReadBinding binding) {
return executeRetryableRead(binding, databaseName, commandCreator, decoder,
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CommitTransactionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CommitTransactionOperation.java
index 77b53787db4..933776af3e0 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CommitTransactionOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CommitTransactionOperation.java
@@ -25,7 +25,6 @@
import com.mongodb.MongoTimeoutException;
import com.mongodb.MongoWriteConcernException;
import com.mongodb.WriteConcern;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncWriteBinding;
import com.mongodb.internal.binding.WriteBinding;
@@ -50,13 +49,12 @@ public class CommitTransactionOperation extends TransactionOperation {
private final boolean alreadyCommitted;
private BsonDocument recoveryToken;
- public CommitTransactionOperation(final TimeoutSettings timeoutSettings, final WriteConcern writeConcern) {
- this(timeoutSettings, writeConcern, false);
+ public CommitTransactionOperation(final WriteConcern writeConcern) {
+ this(writeConcern, false);
}
- public CommitTransactionOperation(final TimeoutSettings timeoutSettings, final WriteConcern writeConcern,
- final boolean alreadyCommitted) {
- super(timeoutSettings, writeConcern);
+ public CommitTransactionOperation(final WriteConcern writeConcern, final boolean alreadyCommitted) {
+ super(writeConcern);
this.alreadyCommitted = alreadyCommitted;
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CountDocumentsOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CountDocumentsOperation.java
index e93f7848d1c..1095dd44508 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CountDocumentsOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CountDocumentsOperation.java
@@ -18,7 +18,6 @@
import com.mongodb.MongoNamespace;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
import com.mongodb.internal.binding.ReadBinding;
@@ -40,7 +39,6 @@
*/
public class CountDocumentsOperation implements AsyncReadOperation, ReadOperation {
private static final Decoder DECODER = new BsonDocumentCodec();
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private boolean retryReads;
private BsonDocument filter;
@@ -50,8 +48,7 @@ public class CountDocumentsOperation implements AsyncReadOperation, ReadOp
private long limit;
private Collation collation;
- public CountDocumentsOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace) {
- this.timeoutSettings = timeoutSettings;
+ public CountDocumentsOperation(final MongoNamespace namespace) {
this.namespace = notNull("namespace", namespace);
}
@@ -122,11 +119,6 @@ public CountDocumentsOperation comment(@Nullable final BsonValue comment) {
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public Long execute(final ReadBinding binding) {
try (BatchCursor cursor = getAggregateOperation().execute(binding)) {
@@ -152,7 +144,7 @@ public void executeAsync(final AsyncReadBinding binding, final SingleResultCallb
}
private AggregateOperation getAggregateOperation() {
- return new AggregateOperation<>(timeoutSettings, namespace, getPipeline(), DECODER)
+ return new AggregateOperation<>(namespace, getPipeline(), DECODER)
.retryReads(retryReads)
.collation(collation)
.comment(comment)
@@ -173,7 +165,7 @@ private List getPipeline() {
return pipeline;
}
- private Long getCountFromAggregateResults(final List results) {
+ private Long getCountFromAggregateResults(@Nullable final List results) {
if (results == null || results.isEmpty()) {
return 0L;
} else {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CountOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CountOperation.java
index 7fc3c8a612d..076fa6f0abe 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CountOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CountOperation.java
@@ -18,7 +18,6 @@
import com.mongodb.MongoNamespace;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
import com.mongodb.internal.binding.ReadBinding;
@@ -44,7 +43,6 @@
*/
public class CountOperation implements AsyncReadOperation, ReadOperation {
private static final Decoder DECODER = new BsonDocumentCodec();
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private boolean retryReads;
private BsonDocument filter;
@@ -53,8 +51,7 @@ public class CountOperation implements AsyncReadOperation, ReadOperation, Wri
private static final BsonDocument ENCRYPT_CLUSTERED_INDEX = BsonDocument.parse("{key: {_id: 1}, unique: true}");
private static final BsonArray SAFE_CONTENT_ARRAY = new BsonArray(
singletonList(BsonDocument.parse("{key: {__safeContent__: 1}, name: '__safeContent___1'}")));
- private final TimeoutSettings timeoutSettings;
private final String databaseName;
private final String collectionName;
private final WriteConcern writeConcern;
@@ -94,9 +92,7 @@ public class CreateCollectionOperation implements AsyncWriteOperation, Wri
private String clusteredIndexName;
private BsonDocument encryptedFields;
- public CreateCollectionOperation(final TimeoutSettings timeoutSettings, final String databaseName,
- final String collectionName, @Nullable final WriteConcern writeConcern) {
- this.timeoutSettings = timeoutSettings;
+ public CreateCollectionOperation(final String databaseName, final String collectionName, @Nullable final WriteConcern writeConcern) {
this.databaseName = notNull("databaseName", databaseName);
this.collectionName = notNull("collectionName", collectionName);
this.writeConcern = writeConcern;
@@ -235,11 +231,6 @@ public CreateCollectionOperation encryptedFields(@Nullable final BsonDocument en
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public Void execute(final WriteBinding binding) {
return withConnection(binding, connection -> {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CreateIndexesOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CreateIndexesOperation.java
index 5b75bcc7b1c..5e02ca55bc7 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CreateIndexesOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CreateIndexesOperation.java
@@ -25,7 +25,6 @@
import com.mongodb.MongoNamespace;
import com.mongodb.WriteConcern;
import com.mongodb.WriteConcernResult;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncWriteBinding;
import com.mongodb.internal.binding.WriteBinding;
@@ -60,15 +59,13 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public class CreateIndexesOperation implements AsyncWriteOperation, WriteOperation {
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final List requests;
private final WriteConcern writeConcern;
private CreateIndexCommitQuorum commitQuorum;
- public CreateIndexesOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final List requests, @Nullable final WriteConcern writeConcern) {
- this.timeoutSettings = timeoutSettings;
+ public CreateIndexesOperation(final MongoNamespace namespace, final List requests,
+ @Nullable final WriteConcern writeConcern) {
this.namespace = notNull("namespace", namespace);
this.requests = notNull("indexRequests", requests);
this.writeConcern = writeConcern;
@@ -103,11 +100,6 @@ public CreateIndexesOperation commitQuorum(@Nullable final CreateIndexCommitQuor
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public Void execute(final WriteBinding binding) {
try {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CreateSearchIndexesOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CreateSearchIndexesOperation.java
index 64eeaa522a0..1a44d887586 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CreateSearchIndexesOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CreateSearchIndexesOperation.java
@@ -17,7 +17,6 @@
package com.mongodb.internal.operation;
import com.mongodb.MongoNamespace;
-import com.mongodb.internal.TimeoutSettings;
import org.bson.BsonArray;
import org.bson.BsonDocument;
import org.bson.BsonString;
@@ -36,9 +35,8 @@ final class CreateSearchIndexesOperation extends AbstractWriteSearchIndexOperati
private static final String COMMAND_NAME = "createSearchIndexes";
private final List indexRequests;
- CreateSearchIndexesOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final List indexRequests) {
- super(timeoutSettings, namespace);
+ CreateSearchIndexesOperation(final MongoNamespace namespace, final List indexRequests) {
+ super(namespace);
this.indexRequests = assertNotNull(indexRequests);
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/CreateViewOperation.java b/driver-core/src/main/com/mongodb/internal/operation/CreateViewOperation.java
index 624ab3cf844..1fe3b21fc51 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/CreateViewOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/CreateViewOperation.java
@@ -18,7 +18,6 @@
import com.mongodb.WriteConcern;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncWriteBinding;
import com.mongodb.internal.binding.WriteBinding;
@@ -48,7 +47,6 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public class CreateViewOperation implements AsyncWriteOperation, WriteOperation {
- private final TimeoutSettings timeoutSettings;
private final String databaseName;
private final String viewName;
private final String viewOn;
@@ -56,9 +54,8 @@ public class CreateViewOperation implements AsyncWriteOperation, WriteOper
private final WriteConcern writeConcern;
private Collation collation;
- public CreateViewOperation(final TimeoutSettings timeoutSettings, final String databaseName,
- final String viewName, final String viewOn, final List pipeline, final WriteConcern writeConcern) {
- this.timeoutSettings = timeoutSettings;
+ public CreateViewOperation(final String databaseName, final String viewName, final String viewOn, final List pipeline,
+ final WriteConcern writeConcern) {
this.databaseName = notNull("databaseName", databaseName);
this.viewName = notNull("viewName", viewName);
this.viewOn = notNull("viewOn", viewOn);
@@ -126,11 +123,6 @@ public CreateViewOperation collation(@Nullable final Collation collation) {
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public Void execute(final WriteBinding binding) {
return withConnection(binding, connection -> {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/DistinctOperation.java b/driver-core/src/main/com/mongodb/internal/operation/DistinctOperation.java
index 0f4733b15e1..a1190ec3db5 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/DistinctOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/DistinctOperation.java
@@ -18,7 +18,6 @@
import com.mongodb.MongoNamespace;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.AsyncBatchCursor;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
@@ -49,8 +48,6 @@
*/
public class DistinctOperation implements AsyncReadOperation>, ReadOperation> {
private static final String VALUES = "values";
-
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final String fieldName;
private final Decoder decoder;
@@ -59,9 +56,7 @@ public class DistinctOperation implements AsyncReadOperation decoder) {
- this.timeoutSettings = timeoutSettings;
+ public DistinctOperation(final MongoNamespace namespace, final String fieldName, final Decoder decoder) {
this.namespace = notNull("namespace", namespace);
this.fieldName = notNull("fieldName", fieldName);
this.decoder = notNull("decoder", decoder);
@@ -103,11 +98,6 @@ public DistinctOperation comment(final BsonValue comment) {
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public BatchCursor execute(final ReadBinding binding) {
return executeRetryableRead(binding, namespace.getDatabaseName(), getCommandCreator(), createCommandDecoder(),
diff --git a/driver-core/src/main/com/mongodb/internal/operation/DropCollectionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/DropCollectionOperation.java
index 275cf781f0a..baf4fb8ab0a 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/DropCollectionOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/DropCollectionOperation.java
@@ -21,7 +21,6 @@
import com.mongodb.MongoOperationTimeoutException;
import com.mongodb.WriteConcern;
import com.mongodb.internal.TimeoutContext;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadWriteBinding;
import com.mongodb.internal.binding.AsyncWriteBinding;
@@ -66,15 +65,12 @@
public class DropCollectionOperation implements AsyncWriteOperation, WriteOperation {
private static final String ENCRYPT_PREFIX = "enxcol_.";
private static final BsonValueCodec BSON_VALUE_CODEC = new BsonValueCodec();
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final WriteConcern writeConcern;
private BsonDocument encryptedFields;
private boolean autoEncryptedFields;
- public DropCollectionOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- @Nullable final WriteConcern writeConcern) {
- this.timeoutSettings = timeoutSettings;
+ public DropCollectionOperation(final MongoNamespace namespace, @Nullable final WriteConcern writeConcern) {
this.namespace = notNull("namespace", namespace);
this.writeConcern = writeConcern;
}
@@ -93,11 +89,6 @@ public DropCollectionOperation autoEncryptedFields(final boolean autoEncryptedFi
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public Void execute(final WriteBinding binding) {
BsonDocument localEncryptedFields = getEncryptedFields((ReadWriteBinding) binding);
@@ -229,7 +220,7 @@ private BsonDocument getCollectionEncryptedFields(final BsonDocument defaultEncr
}
private ListCollectionsOperation listCollectionOperation() {
- return new ListCollectionsOperation<>(timeoutSettings, namespace.getDatabaseName(), BSON_VALUE_CODEC)
+ return new ListCollectionsOperation<>(namespace.getDatabaseName(), BSON_VALUE_CODEC)
.filter(new BsonDocument("name", new BsonString(namespace.getCollectionName())))
.batchSize(1);
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java b/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java
index d62420e6dcf..de125a261ee 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/DropDatabaseOperation.java
@@ -17,7 +17,6 @@
package com.mongodb.internal.operation;
import com.mongodb.WriteConcern;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncWriteBinding;
import com.mongodb.internal.binding.WriteBinding;
@@ -44,13 +43,10 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public class DropDatabaseOperation implements AsyncWriteOperation, WriteOperation {
- private final TimeoutSettings timeoutSettings;
private final String databaseName;
private final WriteConcern writeConcern;
- public DropDatabaseOperation(final TimeoutSettings timeoutSettings,
- final String databaseName, @Nullable final WriteConcern writeConcern) {
- this.timeoutSettings = timeoutSettings;
+ public DropDatabaseOperation(final String databaseName, @Nullable final WriteConcern writeConcern) {
this.databaseName = notNull("databaseName", databaseName);
this.writeConcern = writeConcern;
}
@@ -59,11 +55,6 @@ public WriteConcern getWriteConcern() {
return writeConcern;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public Void execute(final WriteBinding binding) {
return withConnection(binding, connection -> {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/DropIndexOperation.java b/driver-core/src/main/com/mongodb/internal/operation/DropIndexOperation.java
index 6c4df4902d7..2bd315e002a 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/DropIndexOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/DropIndexOperation.java
@@ -19,7 +19,6 @@
import com.mongodb.MongoCommandException;
import com.mongodb.MongoNamespace;
import com.mongodb.WriteConcern;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncWriteBinding;
import com.mongodb.internal.binding.WriteBinding;
@@ -43,24 +42,19 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public class DropIndexOperation implements AsyncWriteOperation, WriteOperation {
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final String indexName;
private final BsonDocument indexKeys;
private final WriteConcern writeConcern;
- public DropIndexOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final String indexName, @Nullable final WriteConcern writeConcern) {
- this.timeoutSettings = timeoutSettings;
+ public DropIndexOperation(final MongoNamespace namespace, final String indexName, @Nullable final WriteConcern writeConcern) {
this.namespace = notNull("namespace", namespace);
this.indexName = notNull("indexName", indexName);
this.indexKeys = null;
this.writeConcern = writeConcern;
}
- public DropIndexOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final BsonDocument indexKeys, @Nullable final WriteConcern writeConcern) {
- this.timeoutSettings = timeoutSettings;
+ public DropIndexOperation(final MongoNamespace namespace, final BsonDocument indexKeys, @Nullable final WriteConcern writeConcern) {
this.namespace = notNull("namespace", namespace);
this.indexKeys = notNull("indexKeys", indexKeys);
this.indexName = null;
@@ -71,11 +65,6 @@ public WriteConcern getWriteConcern() {
return writeConcern;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public Void execute(final WriteBinding binding) {
try {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/DropSearchIndexOperation.java b/driver-core/src/main/com/mongodb/internal/operation/DropSearchIndexOperation.java
index f92fcb8608d..657dedca942 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/DropSearchIndexOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/DropSearchIndexOperation.java
@@ -17,7 +17,6 @@
package com.mongodb.internal.operation;
import com.mongodb.MongoNamespace;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.lang.Nullable;
import org.bson.BsonDocument;
import org.bson.BsonString;
@@ -33,8 +32,8 @@ final class DropSearchIndexOperation extends AbstractWriteSearchIndexOperation {
private static final String COMMAND_NAME = "dropSearchIndex";
private final String indexName;
- DropSearchIndexOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace, final String indexName) {
- super(timeoutSettings, namespace);
+ DropSearchIndexOperation(final MongoNamespace namespace, final String indexName) {
+ super(namespace);
this.indexName = indexName;
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/EstimatedDocumentCountOperation.java b/driver-core/src/main/com/mongodb/internal/operation/EstimatedDocumentCountOperation.java
index b3184b6ed2b..6610b853e7b 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/EstimatedDocumentCountOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/EstimatedDocumentCountOperation.java
@@ -19,7 +19,6 @@
import com.mongodb.MongoCommandException;
import com.mongodb.MongoNamespace;
import com.mongodb.connection.ConnectionDescription;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
import com.mongodb.internal.binding.ReadBinding;
@@ -48,13 +47,11 @@
*/
public class EstimatedDocumentCountOperation implements AsyncReadOperation, ReadOperation {
private static final Decoder DECODER = new BsonDocumentCodec();
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private boolean retryReads;
private BsonValue comment;
- public EstimatedDocumentCountOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace) {
- this.timeoutSettings = timeoutSettings;
+ public EstimatedDocumentCountOperation(final MongoNamespace namespace) {
this.namespace = notNull("namespace", namespace);
}
@@ -73,11 +70,6 @@ public EstimatedDocumentCountOperation comment(@Nullable final BsonValue comment
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public Long execute(final ReadBinding binding) {
try {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/FindAndDeleteOperation.java b/driver-core/src/main/com/mongodb/internal/operation/FindAndDeleteOperation.java
index 6d217b08977..0a2a8352ff8 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/FindAndDeleteOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/FindAndDeleteOperation.java
@@ -20,7 +20,6 @@
import com.mongodb.WriteConcern;
import com.mongodb.client.model.Collation;
import com.mongodb.connection.ConnectionDescription;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.validator.NoOpFieldNameValidator;
import com.mongodb.lang.Nullable;
import org.bson.BsonBoolean;
@@ -37,9 +36,9 @@
*/
public class FindAndDeleteOperation extends BaseFindAndModifyOperation {
- public FindAndDeleteOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final WriteConcern writeConcern, final boolean retryWrites, final Decoder decoder) {
- super(timeoutSettings, namespace, writeConcern, retryWrites, decoder);
+ public FindAndDeleteOperation(final MongoNamespace namespace, final WriteConcern writeConcern, final boolean retryWrites,
+ final Decoder decoder) {
+ super(namespace, writeConcern, retryWrites, decoder);
}
@Override
diff --git a/driver-core/src/main/com/mongodb/internal/operation/FindAndReplaceOperation.java b/driver-core/src/main/com/mongodb/internal/operation/FindAndReplaceOperation.java
index 6b048b33132..8ef66cbf8a5 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/FindAndReplaceOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/FindAndReplaceOperation.java
@@ -20,7 +20,6 @@
import com.mongodb.WriteConcern;
import com.mongodb.client.model.Collation;
import com.mongodb.connection.ConnectionDescription;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.validator.MappedFieldNameValidator;
import com.mongodb.internal.validator.NoOpFieldNameValidator;
import com.mongodb.internal.validator.ReplacingDocumentFieldNameValidator;
@@ -49,9 +48,9 @@ public class FindAndReplaceOperation extends BaseFindAndModifyOperation {
private boolean upsert;
private Boolean bypassDocumentValidation;
- public FindAndReplaceOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final WriteConcern writeConcern, final boolean retryWrites, final Decoder decoder, final BsonDocument replacement) {
- super(timeoutSettings, namespace, writeConcern, retryWrites, decoder);
+ public FindAndReplaceOperation(final MongoNamespace namespace, final WriteConcern writeConcern, final boolean retryWrites,
+ final Decoder decoder, final BsonDocument replacement) {
+ super(namespace, writeConcern, retryWrites, decoder);
this.replacement = notNull("replacement", replacement);
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/FindAndUpdateOperation.java b/driver-core/src/main/com/mongodb/internal/operation/FindAndUpdateOperation.java
index ec9ca3e2ecf..796e63d0edc 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/FindAndUpdateOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/FindAndUpdateOperation.java
@@ -20,7 +20,6 @@
import com.mongodb.WriteConcern;
import com.mongodb.client.model.Collation;
import com.mongodb.connection.ConnectionDescription;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.validator.MappedFieldNameValidator;
import com.mongodb.internal.validator.NoOpFieldNameValidator;
import com.mongodb.internal.validator.UpdateFieldNameValidator;
@@ -54,16 +53,16 @@ public class FindAndUpdateOperation extends BaseFindAndModifyOperation {
private Boolean bypassDocumentValidation;
private List arrayFilters;
- public FindAndUpdateOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
+ public FindAndUpdateOperation(final MongoNamespace namespace,
final WriteConcern writeConcern, final boolean retryWrites, final Decoder decoder, final BsonDocument update) {
- super(timeoutSettings, namespace, writeConcern, retryWrites, decoder);
+ super(namespace, writeConcern, retryWrites, decoder);
this.update = notNull("update", update);
this.updatePipeline = null;
}
- public FindAndUpdateOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final WriteConcern writeConcern, final boolean retryWrites, final Decoder decoder, final List update) {
- super(timeoutSettings, namespace, writeConcern, retryWrites, decoder);
+ public FindAndUpdateOperation(final MongoNamespace namespace, final WriteConcern writeConcern, final boolean retryWrites,
+ final Decoder decoder, final List update) {
+ super(namespace, writeConcern, retryWrites, decoder);
this.updatePipeline = update;
this.update = null;
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/FindOperation.java b/driver-core/src/main/com/mongodb/internal/operation/FindOperation.java
index 2e54a043758..4a231241219 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/FindOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/FindOperation.java
@@ -23,7 +23,6 @@
import com.mongodb.MongoQueryException;
import com.mongodb.client.cursor.TimeoutMode;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.AsyncBatchCursor;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.async.function.AsyncCallbackSupplier;
@@ -41,7 +40,6 @@
import java.util.function.Supplier;
-import static com.mongodb.assertions.Assertions.isTrueArgument;
import static com.mongodb.assertions.Assertions.notNull;
import static com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback;
import static com.mongodb.internal.operation.AsyncOperationHelper.CommandReadTransformerAsync;
@@ -71,7 +69,6 @@
public class FindOperation implements AsyncExplainableReadOperation>, ExplainableReadOperation> {
private static final String FIRST_BATCH = "firstBatch";
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final Decoder decoder;
private boolean retryReads;
@@ -95,9 +92,7 @@ public class FindOperation implements AsyncExplainableReadOperation decoder) {
- this.timeoutSettings = timeoutSettings;
+ public FindOperation(final MongoNamespace namespace, final Decoder decoder) {
this.namespace = notNull("namespace", namespace);
this.decoder = notNull("decoder", decoder);
}
@@ -174,7 +169,6 @@ public FindOperation cursorType(final CursorType cursorType) {
}
public FindOperation timeoutMode(@Nullable final TimeoutMode timeoutMode) {
- isTrueArgument("timeoutMode requires timeoutMS.", timeoutMode == null || timeoutSettings.getTimeoutMS() != null);
if (timeoutMode != null) {
this.timeoutMode = timeoutMode;
}
@@ -289,11 +283,6 @@ public FindOperation allowDiskUse(@Nullable final Boolean allowDiskUse) {
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public BatchCursor execute(final ReadBinding binding) {
IllegalStateException invalidTimeoutModeException = invalidTimeoutModeException();
@@ -374,7 +363,7 @@ public AsyncReadOperation asAsyncExplainableOperation(@Nullable final Exp
}
CommandReadOperation createExplainableOperation(@Nullable final ExplainVerbosity verbosity, final Decoder resultDecoder) {
- return new CommandReadOperation<>(timeoutSettings, getNamespace().getDatabaseName(),
+ return new CommandReadOperation<>(getNamespace().getDatabaseName(),
(operationContext, serverDescription, connectionDescription) ->
asExplainCommand(getCommand(operationContext, MIN_WIRE_VERSION), verbosity), resultDecoder);
}
@@ -469,16 +458,18 @@ private TimeoutMode getTimeoutMode() {
private CommandReadTransformer> transformer() {
return (result, source, connection) ->
- new CommandBatchCursor<>(getTimeoutMode(), result, batchSize, getMaxTimeForCursor(), decoder, comment, source, connection);
+ new CommandBatchCursor<>(getTimeoutMode(), result, batchSize, getMaxTimeForCursor(source.getOperationContext()), decoder,
+ comment, source, connection);
}
private CommandReadTransformerAsync> asyncTransformer() {
return (result, source, connection) ->
- new AsyncCommandBatchCursor<>(getTimeoutMode(), result, batchSize, getMaxTimeForCursor(), decoder, comment, source, connection);
+ new AsyncCommandBatchCursor<>(getTimeoutMode(), result, batchSize, getMaxTimeForCursor(source.getOperationContext()), decoder,
+ comment, source, connection);
}
- private long getMaxTimeForCursor() {
- return cursorType == CursorType.TailableAwait ? timeoutSettings.getMaxAwaitTimeMS() : 0;
+ private long getMaxTimeForCursor(final OperationContext operationContext) {
+ return cursorType == CursorType.TailableAwait ? operationContext.getTimeoutContext().getMaxAwaitTimeMS() : 0;
}
@Nullable
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java
index 151955b8446..86844c89aec 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ListCollectionsOperation.java
@@ -18,7 +18,6 @@
import com.mongodb.MongoCommandException;
import com.mongodb.client.cursor.TimeoutMode;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.VisibleForTesting;
import com.mongodb.internal.async.AsyncBatchCursor;
import com.mongodb.internal.async.SingleResultCallback;
@@ -35,7 +34,6 @@
import java.util.function.Supplier;
-import static com.mongodb.assertions.Assertions.isTrueArgument;
import static com.mongodb.assertions.Assertions.notNull;
import static com.mongodb.internal.VisibleForTesting.AccessModifier.PRIVATE;
import static com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback;
@@ -72,7 +70,6 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public class ListCollectionsOperation implements AsyncReadOperation>, ReadOperation> {
- private final TimeoutSettings timeoutSettings;
private final String databaseName;
private final Decoder decoder;
private boolean retryReads;
@@ -83,9 +80,7 @@ public class ListCollectionsOperation implements AsyncReadOperation decoder) {
- this.timeoutSettings = timeoutSettings;
+ public ListCollectionsOperation(final String databaseName, final Decoder decoder) {
this.databaseName = notNull("databaseName", databaseName);
this.decoder = notNull("decoder", decoder);
}
@@ -150,17 +145,12 @@ public boolean isAuthorizedCollections() {
return authorizedCollections;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
public TimeoutMode getTimeoutMode() {
return timeoutMode;
}
public ListCollectionsOperation timeoutMode(@Nullable final TimeoutMode timeoutMode) {
- isTrueArgument("timeoutMode requires timeoutMS.", timeoutMode == null || timeoutSettings.getTimeoutMS() != null);
if (timeoutMode != null) {
this.timeoutMode = timeoutMode;
}
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java
index 3cdc2027ecf..47ca72b0038 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ListDatabasesOperation.java
@@ -16,7 +16,6 @@
package com.mongodb.internal.operation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.AsyncBatchCursor;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
@@ -45,7 +44,6 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public class ListDatabasesOperation implements AsyncReadOperation>, ReadOperation> {
- private final TimeoutSettings timeoutSettings;
private static final String DATABASES = "databases";
private final Decoder decoder;
private boolean retryReads;
@@ -54,8 +52,7 @@ public class ListDatabasesOperation implements AsyncReadOperation decoder) {
- this.timeoutSettings = timeoutSettings;
+ public ListDatabasesOperation(final Decoder decoder) {
this.decoder = notNull("decoder", decoder);
}
@@ -105,11 +102,6 @@ public ListDatabasesOperation comment(@Nullable final BsonValue comment) {
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public BatchCursor execute(final ReadBinding binding) {
return executeRetryableRead(binding, "admin", getCommandCreator(), CommandResultDocumentCodec.create(decoder, DATABASES),
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ListIndexesOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ListIndexesOperation.java
index d97211c2d10..72adf66fabf 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ListIndexesOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ListIndexesOperation.java
@@ -19,7 +19,6 @@
import com.mongodb.MongoCommandException;
import com.mongodb.MongoNamespace;
import com.mongodb.client.cursor.TimeoutMode;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.AsyncBatchCursor;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.async.function.AsyncCallbackSupplier;
@@ -35,7 +34,6 @@
import java.util.function.Supplier;
-import static com.mongodb.assertions.Assertions.isTrueArgument;
import static com.mongodb.assertions.Assertions.notNull;
import static com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback;
import static com.mongodb.internal.operation.AsyncOperationHelper.CommandReadTransformerAsync;
@@ -67,7 +65,6 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public class ListIndexesOperation implements AsyncReadOperation>, ReadOperation> {
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final Decoder decoder;
private boolean retryReads;
@@ -75,8 +72,7 @@ public class ListIndexesOperation implements AsyncReadOperation decoder) {
- this.timeoutSettings = timeoutSettings;
+ public ListIndexesOperation(final MongoNamespace namespace, final Decoder decoder) {
this.namespace = notNull("namespace", namespace);
this.decoder = notNull("decoder", decoder);
}
@@ -114,18 +110,12 @@ public TimeoutMode getTimeoutMode() {
}
public ListIndexesOperation timeoutMode(@Nullable final TimeoutMode timeoutMode) {
- isTrueArgument("timeoutMode requires timeoutMS.", timeoutMode == null || timeoutSettings.getTimeoutMS() != null);
if (timeoutMode != null) {
this.timeoutMode = timeoutMode;
}
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public BatchCursor execute(final ReadBinding binding) {
RetryState retryState = initialRetryState(retryReads, binding.getOperationContext().getTimeoutContext());
diff --git a/driver-core/src/main/com/mongodb/internal/operation/ListSearchIndexesOperation.java b/driver-core/src/main/com/mongodb/internal/operation/ListSearchIndexesOperation.java
index aad26e47f8e..0f9a81dbf19 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/ListSearchIndexesOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/ListSearchIndexesOperation.java
@@ -20,7 +20,6 @@
import com.mongodb.MongoCommandException;
import com.mongodb.MongoNamespace;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.AsyncBatchCursor;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
@@ -46,7 +45,6 @@
final class ListSearchIndexesOperation
implements AsyncExplainableReadOperation>, ExplainableReadOperation> {
private static final String STAGE_LIST_SEARCH_INDEXES = "$listSearchIndexes";
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final Decoder decoder;
@Nullable
@@ -61,11 +59,9 @@ final class ListSearchIndexesOperation
private final String indexName;
private final boolean retryReads;
- ListSearchIndexesOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final Decoder decoder, @Nullable final String indexName, @Nullable final Integer batchSize,
- @Nullable final Collation collation, @Nullable final BsonValue comment, @Nullable final Boolean allowDiskUse,
- final boolean retryReads) {
- this.timeoutSettings = timeoutSettings;
+ ListSearchIndexesOperation(final MongoNamespace namespace, final Decoder decoder, @Nullable final String indexName,
+ @Nullable final Integer batchSize, @Nullable final Collation collation, @Nullable final BsonValue comment,
+ @Nullable final Boolean allowDiskUse, final boolean retryReads) {
this.namespace = namespace;
this.decoder = decoder;
this.allowDiskUse = allowDiskUse;
@@ -76,11 +72,6 @@ final class ListSearchIndexesOperation
this.retryReads = retryReads;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public BatchCursor execute(final ReadBinding binding) {
try {
@@ -122,7 +113,7 @@ public AsyncReadOperation asAsyncExplainableOperation(@Nullable final Exp
private AggregateOperation asAggregateOperation() {
BsonDocument searchDefinition = getSearchDefinition();
BsonDocument listSearchIndexesStage = new BsonDocument(STAGE_LIST_SEARCH_INDEXES, searchDefinition);
- return new AggregateOperation<>(timeoutSettings, namespace, singletonList(listSearchIndexesStage), decoder)
+ return new AggregateOperation<>(namespace, singletonList(listSearchIndexesStage), decoder)
.retryReads(retryReads)
.collation(collation)
.comment(comment)
diff --git a/driver-core/src/main/com/mongodb/internal/operation/MapReduceToCollectionOperation.java b/driver-core/src/main/com/mongodb/internal/operation/MapReduceToCollectionOperation.java
index 82adfd02405..3dd6110645a 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/MapReduceToCollectionOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/MapReduceToCollectionOperation.java
@@ -20,7 +20,6 @@
import com.mongodb.MongoNamespace;
import com.mongodb.WriteConcern;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncWriteBinding;
import com.mongodb.internal.binding.WriteBinding;
@@ -59,7 +58,6 @@
* This class is not part of the public API and may be removed or changed at any time
*/
public class MapReduceToCollectionOperation implements AsyncWriteOperation, WriteOperation {
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final BsonJavaScript mapFunction;
private final BsonJavaScript reduceFunction;
@@ -78,10 +76,8 @@ public class MapReduceToCollectionOperation implements AsyncWriteOperation VALID_ACTIONS = asList("replace", "merge", "reduce");
- public MapReduceToCollectionOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final BsonJavaScript mapFunction, final BsonJavaScript reduceFunction, @Nullable final String collectionName,
- @Nullable final WriteConcern writeConcern) {
- this.timeoutSettings = timeoutSettings;
+ public MapReduceToCollectionOperation(final MongoNamespace namespace, final BsonJavaScript mapFunction,
+ final BsonJavaScript reduceFunction, @Nullable final String collectionName, @Nullable final WriteConcern writeConcern) {
this.namespace = notNull("namespace", namespace);
this.mapFunction = notNull("mapFunction", mapFunction);
this.reduceFunction = notNull("reduceFunction", reduceFunction);
@@ -211,11 +207,6 @@ public MapReduceToCollectionOperation collation(@Nullable final Collation collat
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public MapReduceStatistics execute(final WriteBinding binding) {
return executeCommand(binding, namespace.getDatabaseName(), getCommandCreator(), transformer());
@@ -247,7 +238,7 @@ public AsyncReadOperation asExplainableOperationAsync(final Explai
}
private CommandReadOperation createExplainableOperation(final ExplainVerbosity explainVerbosity) {
- return new CommandReadOperation<>(timeoutSettings, getNamespace().getDatabaseName(),
+ return new CommandReadOperation<>(getNamespace().getDatabaseName(),
(operationContext, serverDescription, connectionDescription) ->
asExplainCommand(getCommandCreator().create(operationContext, serverDescription, connectionDescription),
explainVerbosity), new BsonDocumentCodec());
diff --git a/driver-core/src/main/com/mongodb/internal/operation/MapReduceWithInlineResultsOperation.java b/driver-core/src/main/com/mongodb/internal/operation/MapReduceWithInlineResultsOperation.java
index c70ff7a270b..daae59d5c15 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/MapReduceWithInlineResultsOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/MapReduceWithInlineResultsOperation.java
@@ -19,7 +19,6 @@
import com.mongodb.ExplainVerbosity;
import com.mongodb.MongoNamespace;
import com.mongodb.client.model.Collation;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.binding.AsyncReadBinding;
import com.mongodb.internal.binding.ReadBinding;
@@ -56,7 +55,6 @@
*/
public class MapReduceWithInlineResultsOperation implements AsyncReadOperation>,
ReadOperation> {
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final BsonJavaScript mapFunction;
private final BsonJavaScript reduceFunction;
@@ -70,9 +68,8 @@ public class MapReduceWithInlineResultsOperation implements AsyncReadOperatio
private boolean verbose;
private Collation collation;
- public MapReduceWithInlineResultsOperation(final TimeoutSettings timeoutSettings, final MongoNamespace namespace,
- final BsonJavaScript mapFunction, final BsonJavaScript reduceFunction, final Decoder decoder) {
- this.timeoutSettings = timeoutSettings;
+ public MapReduceWithInlineResultsOperation(final MongoNamespace namespace, final BsonJavaScript mapFunction,
+ final BsonJavaScript reduceFunction, final Decoder decoder) {
this.namespace = notNull("namespace", namespace);
this.mapFunction = notNull("mapFunction", mapFunction);
this.reduceFunction = notNull("reduceFunction", reduceFunction);
@@ -167,11 +164,6 @@ public MapReduceWithInlineResultsOperation collation(@Nullable final Collatio
return this;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public MapReduceBatchCursor execute(final ReadBinding binding) {
return executeRetryableRead(binding, namespace.getDatabaseName(),
@@ -196,7 +188,7 @@ public AsyncReadOperation asExplainableOperationAsync(final Explai
}
private CommandReadOperation createExplainableOperation(final ExplainVerbosity explainVerbosity) {
- return new CommandReadOperation<>(timeoutSettings, namespace.getDatabaseName(),
+ return new CommandReadOperation<>(namespace.getDatabaseName(),
(operationContext, serverDescription, connectionDescription) ->
asExplainCommand(getCommandCreator().create(operationContext, serverDescription, connectionDescription),
explainVerbosity), new BsonDocumentCodec());
diff --git a/driver-core/src/main/com/mongodb/internal/operation/MixedBulkWriteOperation.java b/driver-core/src/main/com/mongodb/internal/operation/MixedBulkWriteOperation.java
index 3fa222e733c..f99f297f96d 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/MixedBulkWriteOperation.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/MixedBulkWriteOperation.java
@@ -23,7 +23,6 @@
import com.mongodb.bulk.BulkWriteResult;
import com.mongodb.connection.ConnectionDescription;
import com.mongodb.internal.TimeoutContext;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.async.SingleResultCallback;
import com.mongodb.internal.async.function.AsyncCallbackLoop;
import com.mongodb.internal.async.function.AsyncCallbackRunnable;
@@ -78,7 +77,6 @@
*/
public class MixedBulkWriteOperation implements AsyncWriteOperation, WriteOperation {
private static final FieldNameValidator NO_OP_FIELD_NAME_VALIDATOR = new NoOpFieldNameValidator();
- private final TimeoutSettings timeoutSettings;
private final MongoNamespace namespace;
private final List extends WriteRequest> writeRequests;
private final boolean ordered;
@@ -88,10 +86,8 @@ public class MixedBulkWriteOperation implements AsyncWriteOperation writeRequests, final boolean ordered, final WriteConcern writeConcern,
- final boolean retryWrites) {
- this.timeoutSettings = timeoutSettings;
+ public MixedBulkWriteOperation(final MongoNamespace namespace, final List extends WriteRequest> writeRequests,
+ final boolean ordered, final WriteConcern writeConcern, final boolean retryWrites) {
this.namespace = notNull("namespace", namespace);
this.writeRequests = notNull("writes", writeRequests);
this.ordered = ordered;
@@ -178,11 +174,6 @@ private boolean shouldAttemptToRetryWrite(final RetryState retryState, final Thr
return decision;
}
- @Override
- public TimeoutSettings getTimeoutSettings() {
- return timeoutSettings;
- }
-
@Override
public BulkWriteResult execute(final WriteBinding binding) {
TimeoutContext timeoutContext = binding.getOperationContext().getTimeoutContext();
diff --git a/driver-core/src/main/com/mongodb/internal/operation/OperationHelper.java b/driver-core/src/main/com/mongodb/internal/operation/OperationHelper.java
index 8476f54edf8..b4a321a97c2 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/OperationHelper.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/OperationHelper.java
@@ -201,7 +201,7 @@ static void addMaxTimeMSToNonTailableCursor(final BsonDocument commandDocument,
addMaxTimeMSToNonTailableCursor(commandDocument, TimeoutMode.CURSOR_LIFETIME, operationContext);
}
- static void addMaxTimeMSToNonTailableCursor(final BsonDocument commandDocument, final TimeoutMode timeoutMode,
+ static void addMaxTimeMSToNonTailableCursor(final BsonDocument commandDocument, @Nullable final TimeoutMode timeoutMode,
final OperationContext operationContext) {
long maxTimeMS = timeoutMode == TimeoutMode.ITERATION ? 0 : operationContext.getTimeoutContext().getMaxTimeMS();
if (maxTimeMS > 0) {
diff --git a/driver-core/src/main/com/mongodb/internal/operation/Operations.java b/driver-core/src/main/com/mongodb/internal/operation/Operations.java
index e2d1d352527..64d006c7e45 100644
--- a/driver-core/src/main/com/mongodb/internal/operation/Operations.java
+++ b/driver-core/src/main/com/mongodb/internal/operation/Operations.java
@@ -55,7 +55,6 @@
import com.mongodb.client.model.WriteModel;
import com.mongodb.client.model.changestream.FullDocument;
import com.mongodb.client.model.changestream.FullDocumentBeforeChange;
-import com.mongodb.internal.TimeoutSettings;
import com.mongodb.internal.bulk.DeleteRequest;
import com.mongodb.internal.bulk.IndexRequest;
import com.mongodb.internal.bulk.InsertRequest;
@@ -88,7 +87,6 @@
import static com.mongodb.assertions.Assertions.notNull;
import static java.lang.String.format;
import static java.util.Collections.singletonList;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
final class Operations {
private final MongoNamespace namespace;
@@ -99,11 +97,10 @@ final class Operations {
private final WriteConcern writeConcern;
private final boolean retryWrites;
private final boolean retryReads;
- private final TimeoutSettings timeoutSettings;
Operations(@Nullable final MongoNamespace namespace, final Class