Skip to content

Commit e3dac02

Browse files
authored
Log cursor results at debug level (#817)
* The logger name is "org.mongodb.driver.operation" * The message is "Received batch of %s documents with cursorId %d from server %s" * It logs the initial results and results from each getMore for both sync and reactive cursors JAVA-4377
1 parent 94551c7 commit e3dac02

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

driver-core/src/main/com/mongodb/internal/connection/QueryResult.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,8 @@ public List<T> getResults() {
8484
public ServerAddress getAddress() {
8585
return serverAddress;
8686
}
87+
88+
public long getCursorId() {
89+
return cursorId;
90+
}
8791
}

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import com.mongodb.ReadPreference;
2323
import com.mongodb.ServerCursor;
2424
import com.mongodb.connection.ServerType;
25+
import com.mongodb.diagnostics.logging.Logger;
26+
import com.mongodb.diagnostics.logging.Loggers;
2527
import com.mongodb.internal.async.AsyncAggregateResponseBatchCursor;
2628
import com.mongodb.internal.async.SingleResultCallback;
2729
import com.mongodb.internal.binding.AsyncConnectionSource;
@@ -49,13 +51,14 @@
4951
import static com.mongodb.assertions.Assertions.notNull;
5052
import static com.mongodb.internal.async.ErrorHandlingResultCallback.errorHandlingCallback;
5153
import static com.mongodb.internal.operation.CursorHelper.getNumberToReturn;
52-
import static com.mongodb.internal.operation.OperationHelper.LOGGER;
5354
import static com.mongodb.internal.operation.OperationHelper.getMoreCursorDocumentToQueryResult;
5455
import static com.mongodb.internal.operation.QueryHelper.translateCommandException;
5556
import static com.mongodb.internal.operation.ServerVersionHelper.serverIsAtLeastVersionThreeDotTwo;
57+
import static java.lang.String.format;
5658
import static java.util.Collections.singletonList;
5759

5860
class AsyncQueryBatchCursor<T> implements AsyncAggregateResponseBatchCursor<T> {
61+
private static final Logger LOGGER = Loggers.getLogger("operation");
5962
private static final FieldNameValidator NO_OP_FIELD_NAME_VALIDATOR = new NoOpFieldNameValidator();
6063
private static final String CURSOR = "cursor";
6164
private static final String POST_BATCH_RESUME_TOKEN = "postBatchResumeToken";
@@ -120,6 +123,7 @@ class AsyncQueryBatchCursor<T> implements AsyncAggregateResponseBatchCursor<T> {
120123
}
121124
}
122125
this.maxWireVersion = connection == null ? 0 : connection.getDescription().getMaxWireVersion();
126+
logQueryResult(firstBatch);
123127
}
124128

125129
/**
@@ -337,8 +341,10 @@ private void endOperationInProgress() {
337341
}
338342
}
339343

344+
340345
private void handleGetMoreQueryResult(final AsyncConnection connection, final SingleResultCallback<List<T>> callback,
341346
final QueryResult<T> result) {
347+
logQueryResult(result);
342348
cursor.set(result.getCursor());
343349
if (isClosePending) {
344350
try {
@@ -373,6 +379,11 @@ private void handleGetMoreQueryResult(final AsyncConnection connection, final Si
373379
}
374380
}
375381

382+
private void logQueryResult(final QueryResult<T> result) {
383+
LOGGER.debug(format("Received batch of %d documents with cursorId %d from server %s", result.getResults().size(),
384+
result.getCursorId(), result.getAddress()));
385+
}
386+
376387
private class CommandResultSingleResultCallback implements SingleResultCallback<BsonDocument> {
377388
private final AsyncConnection connection;
378389
private final ServerCursor cursor;

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import com.mongodb.ServerCursor;
2828
import com.mongodb.annotations.ThreadSafe;
2929
import com.mongodb.connection.ServerType;
30+
import com.mongodb.diagnostics.logging.Logger;
31+
import com.mongodb.diagnostics.logging.Loggers;
3032
import com.mongodb.internal.binding.ConnectionSource;
3133
import com.mongodb.internal.connection.Connection;
3234
import com.mongodb.internal.connection.QueryResult;
@@ -60,9 +62,11 @@
6062
import static com.mongodb.internal.operation.OperationHelper.getMoreCursorDocumentToQueryResult;
6163
import static com.mongodb.internal.operation.QueryHelper.translateCommandException;
6264
import static com.mongodb.internal.operation.ServerVersionHelper.serverIsAtLeastVersionThreeDotTwo;
65+
import static java.lang.String.format;
6366
import static java.util.Collections.singletonList;
6467

6568
class QueryBatchCursor<T> implements AggregateResponseBatchCursor<T> {
69+
private static final Logger LOGGER = Loggers.getLogger("operation");
6670
private static final FieldNameValidator NO_OP_FIELD_NAME_VALIDATOR = new NoOpFieldNameValidator();
6771
private static final String CURSOR = "cursor";
6872
private static final String POST_BATCH_RESUME_TOKEN = "postBatchResumeToken";
@@ -318,6 +322,8 @@ private BsonDocument asGetMoreCommandDocument(final ServerCursor serverCursor) {
318322
private ServerCursor initFromQueryResult(final QueryResult<T> queryResult) {
319323
nextBatch = queryResult.getResults().isEmpty() ? null : queryResult.getResults();
320324
count += queryResult.getResults().size();
325+
LOGGER.debug(format("Received batch of %d documents with cursorId %d from server %s", queryResult.getResults().size(),
326+
queryResult.getCursorId(), queryResult.getAddress()));
321327
return queryResult.getCursor();
322328
}
323329

0 commit comments

Comments
 (0)