Skip to content

Commit 616ab9d

Browse files
stIncMalejyemin
authored andcommitted
Emit log messages from LoadBalancedCluster despite there being no server selection
JAVA-4754
1 parent ac477f2 commit 616ab9d

File tree

2 files changed

+43
-17
lines changed

2 files changed

+43
-17
lines changed

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

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public ServerTuple selectServer(final ServerSelector serverSelector, final Opera
121121
try {
122122
CountDownLatch currentPhase = phase.get();
123123
ClusterDescription curDescription = description;
124-
logServerSelectionStarted(operationContext, serverSelector, curDescription);
124+
logServerSelectionStarted(clusterId, operationContext, serverSelector, curDescription);
125125
ServerSelector compositeServerSelector = getCompositeServerSelector(serverSelector);
126126
ServerTuple serverTuple = selectServer(compositeServerSelector, curDescription);
127127

@@ -137,7 +137,8 @@ public ServerTuple selectServer(final ServerSelector serverSelector, final Opera
137137
}
138138

139139
if (serverTuple != null) {
140-
logServerSelectionSucceeded(operationContext, serverTuple.getServerDescription().getAddress(), serverSelector, curDescription);
140+
logServerSelectionSucceeded(
141+
clusterId, operationContext, serverTuple.getServerDescription().getAddress(), serverSelector, curDescription);
141142
return serverTuple;
142143
}
143144

@@ -148,7 +149,7 @@ public ServerTuple selectServer(final ServerSelector serverSelector, final Opera
148149
}
149150

150151
if (!selectionWaitingLogged) {
151-
logServerSelectionWaiting(operationContext, remainingTimeNanos, serverSelector, curDescription);
152+
logServerSelectionWaiting(clusterId, operationContext, remainingTimeNanos, serverSelector, curDescription);
152153
selectionWaitingLogged = true;
153154
}
154155

@@ -178,7 +179,7 @@ public void selectServerAsync(final ServerSelector serverSelector, final Operati
178179
CountDownLatch currentPhase = phase.get();
179180
ClusterDescription currentDescription = description;
180181

181-
logServerSelectionStarted(operationContext, serverSelector, currentDescription);
182+
logServerSelectionStarted(clusterId, operationContext, serverSelector, currentDescription);
182183
ServerSelectionRequest request = new ServerSelectionRequest(operationContext, serverSelector, getCompositeServerSelector(serverSelector),
183184
getMaxWaitTimeNanos(), callback);
184185

@@ -277,13 +278,14 @@ private boolean handleServerSelectionRequest(final ServerSelectionRequest reques
277278

278279
ServerTuple serverTuple = selectServer(request.compositeSelector, description);
279280
if (serverTuple != null) {
280-
logServerSelectionSucceeded(
281-
request.operationContext, serverTuple.getServerDescription().getAddress(), request.originalSelector, description);
281+
logServerSelectionSucceeded(clusterId, request.operationContext, serverTuple.getServerDescription().getAddress(),
282+
request.originalSelector, description);
282283
request.onResult(serverTuple, null);
283284
return true;
284285
}
285286
if (prevPhase == null) {
286-
logServerSelectionWaiting(request.operationContext, request.getRemainingTime(), request.originalSelector, description);
287+
logServerSelectionWaiting(
288+
clusterId, request.operationContext, request.getRemainingTime(), request.originalSelector, description);
287289
}
288290
}
289291

@@ -360,7 +362,7 @@ private MongoIncompatibleDriverException createAndLogIncompatibleException(
360362
final ServerSelector serverSelector,
361363
final ClusterDescription clusterDescription) {
362364
MongoIncompatibleDriverException exception = createIncompatibleException(clusterDescription);
363-
logServerSelectionFailed(operationContext, exception, serverSelector, clusterDescription);
365+
logServerSelectionFailed(clusterId, operationContext, exception, serverSelector, clusterDescription);
364366
return exception;
365367
}
366368

@@ -390,7 +392,7 @@ private MongoException createAndLogTimeoutException(
390392
MongoTimeoutException exception = new MongoTimeoutException(format(
391393
"Timed out while waiting for a server that matches %s. Client view of cluster state is %s",
392394
serverSelector, clusterDescription.getShortDescription()));
393-
logServerSelectionFailed(operationContext, exception, serverSelector, clusterDescription);
395+
logServerSelectionFailed(clusterId, operationContext, exception, serverSelector, clusterDescription);
394396
return exception;
395397
}
396398

@@ -498,7 +500,8 @@ public void run() {
498500
}
499501
}
500502

501-
private void logServerSelectionStarted(
503+
static void logServerSelectionStarted(
504+
final ClusterId clusterId,
502505
final OperationContext operationContext,
503506
final ServerSelector serverSelector,
504507
final ClusterDescription clusterDescription) {
@@ -514,7 +517,8 @@ private void logServerSelectionStarted(
514517
}
515518
}
516519

517-
private void logServerSelectionWaiting(
520+
private static void logServerSelectionWaiting(
521+
final ClusterId clusterId,
518522
final OperationContext operationContext,
519523
@Nullable
520524
final Long remainingTimeNanos,
@@ -534,7 +538,8 @@ private void logServerSelectionWaiting(
534538
}
535539
}
536540

537-
private void logServerSelectionFailed(
541+
private static void logServerSelectionFailed(
542+
final ClusterId clusterId,
538543
final OperationContext operationContext,
539544
final MongoException failure,
540545
final ServerSelector serverSelector,
@@ -558,7 +563,8 @@ private void logServerSelectionFailed(
558563
}
559564
}
560565

561-
private void logServerSelectionSucceeded(
566+
static void logServerSelectionSucceeded(
567+
final ClusterId clusterId,
562568
final OperationContext operationContext,
563569
final ServerAddress serverAddress,
564570
final ServerSelector serverSelector,

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

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@
5757
import static com.mongodb.assertions.Assertions.isTrue;
5858
import static com.mongodb.assertions.Assertions.notNull;
5959
import static com.mongodb.connection.ServerConnectionState.CONNECTING;
60+
import static com.mongodb.internal.connection.BaseCluster.logServerSelectionStarted;
61+
import static com.mongodb.internal.connection.BaseCluster.logServerSelectionSucceeded;
6062
import static com.mongodb.internal.event.EventListenerHelper.singleClusterListener;
6163
import static com.mongodb.internal.thread.InterruptionUtil.interruptAndCreateMongoInterruptedException;
6264
import static java.lang.String.format;
@@ -204,7 +206,11 @@ public ServerTuple selectServer(final ServerSelector serverSelector, final Opera
204206
if (srvRecordResolvedToMultipleHosts) {
205207
throw createResolvedToMultipleHostsException();
206208
}
207-
return new ServerTuple(assertNotNull(server), description.getServerDescriptions().get(0));
209+
ClusterDescription curDescription = description;
210+
logServerSelectionStarted(clusterId, operationContext, serverSelector, curDescription);
211+
ServerTuple serverTuple = new ServerTuple(assertNotNull(server), curDescription.getServerDescriptions().get(0));
212+
logServerSelectionSucceeded(clusterId, operationContext, serverTuple.getServerDescription().getAddress(), serverSelector, curDescription);
213+
return serverTuple;
208214
}
209215

210216

@@ -238,7 +244,8 @@ public void selectServerAsync(final ServerSelector serverSelector, final Operati
238244
return;
239245
}
240246

241-
ServerSelectionRequest serverSelectionRequest = new ServerSelectionRequest(getMaxWaitTimeNanos(), callback);
247+
ServerSelectionRequest serverSelectionRequest = new ServerSelectionRequest(
248+
operationContext, serverSelector, getMaxWaitTimeNanos(), callback);
242249
if (initializationCompleted) {
243250
handleServerSelectionRequest(serverSelectionRequest);
244251
} else {
@@ -288,7 +295,13 @@ private void handleServerSelectionRequest(final ServerSelectionRequest serverSel
288295
if (srvRecordResolvedToMultipleHosts) {
289296
serverSelectionRequest.onError(createResolvedToMultipleHostsException());
290297
} else {
291-
serverSelectionRequest.onSuccess(new ServerTuple(assertNotNull(server), description.getServerDescriptions().get(0)));
298+
ClusterDescription curDescription = description;
299+
logServerSelectionStarted(
300+
clusterId, serverSelectionRequest.operationContext, serverSelectionRequest.serverSelector, curDescription);
301+
ServerTuple serverTuple = new ServerTuple(assertNotNull(server), curDescription.getServerDescriptions().get(0));
302+
logServerSelectionSucceeded(clusterId, serverSelectionRequest.operationContext,
303+
serverTuple.getServerDescription().getAddress(), serverSelectionRequest.serverSelector, curDescription);
304+
serverSelectionRequest.onSuccess(serverTuple);
292305
}
293306
}
294307

@@ -391,11 +404,18 @@ public void run() {
391404
}
392405

393406
private static final class ServerSelectionRequest {
407+
private final OperationContext operationContext;
408+
private final ServerSelector serverSelector;
394409
private final long maxWaitTimeNanos;
395410
private final long startTimeNanos = System.nanoTime();
396411
private final SingleResultCallback<ServerTuple> callback;
397412

398-
private ServerSelectionRequest(final long maxWaitTimeNanos, final SingleResultCallback<ServerTuple> callback) {
413+
private ServerSelectionRequest(
414+
final OperationContext operationContext,
415+
final ServerSelector serverSelector,
416+
final long maxWaitTimeNanos, final SingleResultCallback<ServerTuple> callback) {
417+
this.operationContext = operationContext;
418+
this.serverSelector = serverSelector;
399419
this.maxWaitTimeNanos = maxWaitTimeNanos;
400420
this.callback = callback;
401421
}

0 commit comments

Comments
 (0)