Skip to content

Commit 15c017b

Browse files
refactor by centralizing change in FindOptions#getBatchSize()
1 parent c0b36c5 commit 15c017b

File tree

4 files changed

+6
-25
lines changed

4 files changed

+6
-25
lines changed

driver-core/src/main/com/mongodb/internal/client/model/FindOptions.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,9 @@ public FindOptions maxAwaitTime(final long maxAwaitTime, final TimeUnit timeUnit
215215
* @mongodb.driver.manual reference/method/cursor.batchSize/#cursor.batchSize Batch Size
216216
*/
217217
public int getBatchSize() {
218-
return batchSize;
218+
return batchSize > 0 && batchSize == limit
219+
? (batchSize + 1)
220+
: batchSize;
219221
}
220222

221223
/**

driver-core/src/main/com/mongodb/internal/operation/Operations.java

+1-8
Original file line numberDiff line numberDiff line change
@@ -188,18 +188,11 @@ <TResult> FindOperation<TResult> find(final MongoNamespace findNamespace, @Nulla
188188

189189
private <TResult> FindOperation<TResult> createFindOperation(final MongoNamespace findNamespace, @Nullable final Bson filter,
190190
final Class<TResult> resultClass, final FindOptions options) {
191-
final int effectiveBatchSize;
192-
if (options.getBatchSize() > 0 && options.getBatchSize() == options.getLimit()) {
193-
// Eliminate unnecessary killCursors command when batchSize == limit
194-
effectiveBatchSize = options.getBatchSize() + 1;
195-
} else {
196-
effectiveBatchSize = options.getBatchSize();
197-
}
198191
FindOperation<TResult> operation = new FindOperation<>(
199192
findNamespace, codecRegistry.get(resultClass))
200193
.retryReads(retryReads)
201194
.filter(filter == null ? new BsonDocument() : filter.toBsonDocument(documentClass, codecRegistry))
202-
.batchSize(effectiveBatchSize)
195+
.batchSize(options.getBatchSize())
203196
.skip(options.getSkip())
204197
.limit(options.getLimit())
205198
.projection(toBsonDocument(options.getProjection()))

driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/FindPublisherImpl.java

+1-8
Original file line numberDiff line numberDiff line change
@@ -233,13 +233,6 @@ Function<AsyncOperations<?>, TimeoutSettings> getTimeoutSettings() {
233233

234234
@Override
235235
AsyncReadOperation<AsyncBatchCursor<T>> asAsyncFirstReadOperation() {
236-
final FindOptions effectiveFindOptions;
237-
if (findOptions.getBatchSize() > 0 && findOptions.getBatchSize() == findOptions.getLimit()) {
238-
// Eliminate unnecessary killCursors command when batchSize == limit
239-
effectiveFindOptions = findOptions.withBatchSize(findOptions.getBatchSize() + 1);
240-
} else {
241-
effectiveFindOptions = findOptions;
242-
}
243-
return getOperations().findFirst(filter, getDocumentClass(), effectiveFindOptions);
236+
return getOperations().findFirst(filter, getDocumentClass(), findOptions);
244237
}
245238
}

driver-sync/src/main/com/mongodb/client/internal/FindIterableImpl.java

+1-8
Original file line numberDiff line numberDiff line change
@@ -245,14 +245,7 @@ private <E> E executeExplain(final Class<E> explainResultClass, @Nullable final
245245
}
246246

247247
public ExplainableReadOperation<BatchCursor<TResult>> asReadOperation() {
248-
final FindOptions effectiveFindOptions;
249-
if (findOptions.getBatchSize() > 0 && findOptions.getBatchSize() == findOptions.getLimit()) {
250-
// Eliminate unnecessary killCursors command when batchSize == limit
251-
effectiveFindOptions = findOptions.withBatchSize(findOptions.getBatchSize() + 1);
252-
} else {
253-
effectiveFindOptions = findOptions;
254-
}
255-
return operations.find(filter, resultClass, effectiveFindOptions);
248+
return operations.find(filter, resultClass, findOptions);
256249
}
257250

258251
}

0 commit comments

Comments
 (0)