Skip to content

Commit aed0c33

Browse files
committed
Use a volatile variable for CommandCursorResult instead of an atomic ref
1 parent 831bef1 commit aed0c33

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
import java.util.List;
4545
import java.util.concurrent.atomic.AtomicBoolean;
4646
import java.util.concurrent.atomic.AtomicInteger;
47-
import java.util.concurrent.atomic.AtomicReference;
4847
import java.util.concurrent.locks.Lock;
4948
import java.util.concurrent.locks.ReentrantLock;
5049
import java.util.function.Consumer;
@@ -78,10 +77,10 @@ class AsyncCommandBatchCursor<T> implements AsyncAggregateResponseBatchCursor<T>
7877

7978
private final AtomicInteger count = new AtomicInteger();
8079
private final AtomicBoolean processedInitial = new AtomicBoolean();
81-
private final AtomicReference<CommandCursorResult<T>> commandCursorResult = new AtomicReference<>();
8280
private final int maxWireVersion;
8381
private final boolean firstBatchEmpty;
8482
private final ResourceManager resourceManager;
83+
private volatile CommandCursorResult<T> commandCursorResult;
8584
private int batchSize;
8685

8786
AsyncCommandBatchCursor(
@@ -131,7 +130,7 @@ public void next(final SingleResultCallback<List<T>> callback) {
131130
boolean cursorClosed = localServerCursor == null;
132131
List<T> batchResults = emptyList();
133132
if (!processedInitial.getAndSet(true) && !firstBatchEmpty) {
134-
batchResults = commandCursorResult.get().getResults();
133+
batchResults = commandCursorResult.getResults();
135134
}
136135

137136
if (cursorClosed || !batchResults.isEmpty()) {
@@ -167,12 +166,12 @@ public void close() {
167166

168167
@Override
169168
public BsonDocument getPostBatchResumeToken() {
170-
return commandCursorResult.get().getPostBatchResumeToken();
169+
return commandCursorResult.getPostBatchResumeToken();
171170
}
172171

173172
@Override
174173
public BsonTimestamp getOperationTime() {
175-
return commandCursorResult.get().getOperationTime();
174+
return commandCursorResult.getOperationTime();
176175
}
177176

178177
@Override
@@ -249,7 +248,7 @@ private CommandCursorResult<T> initFromCommandCursorDocument(
249248
LOGGER.debug(format("Received batch of %d documents with cursorId %d from server %s", cursorResult.getResults().size(),
250249
cursorResult.getCursorId(), cursorResult.getServerAddress()));
251250
}
252-
this.commandCursorResult.set(cursorResult);
251+
this.commandCursorResult = cursorResult;
253252
return cursorResult;
254253
}
255254

0 commit comments

Comments
 (0)