Skip to content

Commit 6574e24

Browse files
committed
Trivial code improvements
JAVA-4254
1 parent 29ebd76 commit 6574e24

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

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

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
import java.util.Deque;
5050
import java.util.Iterator;
5151
import java.util.List;
52+
import java.util.Objects;
53+
import java.util.stream.Stream;
5254
import java.util.concurrent.ConcurrentLinkedDeque;
5355
import java.util.concurrent.CountDownLatch;
5456
import java.util.concurrent.ThreadLocalRandom;
@@ -82,6 +84,7 @@
8284
import static java.util.Comparator.comparingInt;
8385
import static java.util.concurrent.TimeUnit.MILLISECONDS;
8486
import static java.util.concurrent.TimeUnit.NANOSECONDS;
87+
import static java.util.stream.Collectors.toList;
8588

8689
abstract class BaseCluster implements Cluster {
8790
private static final Logger LOGGER = Loggers.getLogger("cluster");
@@ -351,12 +354,12 @@ private static List<ServerTuple> atMostNRandom(final ArrayList<ServerDescription
351354
}
352355

353356
private ServerSelector getCompleteServerSelector(final ServerSelector serverSelector, final ServerDeprioritization serverDeprioritization) {
354-
ServerSelector latencyMinimizingServerSelector =
355-
new LatencyMinimizingServerSelector(settings.getLocalThreshold(MILLISECONDS), MILLISECONDS);
356-
CompositeServerSelector compositeSelector = settings.getServerSelector() == null
357-
? new CompositeServerSelector(asList(serverSelector, latencyMinimizingServerSelector))
358-
: new CompositeServerSelector(asList(serverSelector, settings.getServerSelector(), latencyMinimizingServerSelector));
359-
return serverDeprioritization.apply(compositeSelector);
357+
List<ServerSelector> selectors = Stream.of(
358+
serverSelector,
359+
settings.getServerSelector(),
360+
new LatencyMinimizingServerSelector(settings.getLocalThreshold(MILLISECONDS), MILLISECONDS)
361+
).filter(Objects::nonNull).collect(toList());
362+
return serverDeprioritization.apply(new CompositeServerSelector(selectors));
360363
}
361364

362365
protected ClusterableServer createServer(final ServerAddress serverAddress) {

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

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -97,16 +97,10 @@ private DeprioritizingSelector(final ServerSelector wrapped) {
9797
@Override
9898
public List<ServerDescription> select(final ClusterDescription clusterDescription) {
9999
if (isEnabled(clusterDescription.getType())) {
100-
List<ServerDescription> filteredServerDescriptions = ClusterDescriptionHelper.getServersByPredicate(
100+
List<ServerDescription> nonDeprioritizedServerDescriptions = ClusterDescriptionHelper.getServersByPredicate(
101101
clusterDescription, serverDescription -> !deprioritized.contains(serverDescription.getAddress()));
102-
ClusterDescription filteredClusterDescription = new ClusterDescription(
103-
clusterDescription.getConnectionMode(),
104-
clusterDescription.getType(),
105-
clusterDescription.getSrvResolutionException(),
106-
filteredServerDescriptions,
107-
clusterDescription.getClusterSettings(),
108-
clusterDescription.getServerSettings());
109-
List<ServerDescription> result = wrapped.select(filteredClusterDescription);
102+
List<ServerDescription> result = wrapped.select(
103+
copyWithServerDescriptions(clusterDescription, nonDeprioritizedServerDescriptions));
110104
if (result.isEmpty()) {
111105
// fall back to selecting from all servers ignoring the deprioritized ones
112106
result = wrapped.select(clusterDescription);
@@ -116,6 +110,17 @@ public List<ServerDescription> select(final ClusterDescription clusterDescriptio
116110
return wrapped.select(clusterDescription);
117111
}
118112
}
113+
114+
private ClusterDescription copyWithServerDescriptions(
115+
final ClusterDescription clusterDescription, final List<ServerDescription> serverDescriptions) {
116+
return new ClusterDescription(
117+
clusterDescription.getConnectionMode(),
118+
clusterDescription.getType(),
119+
clusterDescription.getSrvResolutionException(),
120+
serverDescriptions,
121+
clusterDescription.getClusterSettings(),
122+
clusterDescription.getServerSettings());
123+
}
119124
}
120125
}
121126
}

0 commit comments

Comments
 (0)