Skip to content

Commit 5fb47a3

Browse files
committed
JAVA-1157: Clean up messaging around server selectors and server selection timeouts.
1 parent 206cc90 commit 5fb47a3

File tree

6 files changed

+35
-37
lines changed

6 files changed

+35
-37
lines changed

src/main/com/mongodb/BaseCluster.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.logging.Logger;
2626

2727
import static java.lang.String.format;
28+
import static java.util.concurrent.TimeUnit.MILLISECONDS;
2829
import static java.util.concurrent.TimeUnit.NANOSECONDS;
2930
import static org.bson.util.Assertions.isTrue;
3031
import static org.bson.util.Assertions.notNull;
@@ -76,27 +77,24 @@ public Server getServer(final ServerSelector serverSelector, final long maxWaitT
7677
}
7778

7879
if (!curDescription.isConnecting()) {
79-
throw new MongoServerSelectionException(
80-
format("Unable to connect to any server that satisfies the selector " +
81-
"%s", serverSelector));
80+
throw new MongoServerSelectionException(format("Unable to connect to any server that matches %s", serverSelector));
8281
}
8382

8483
final long timeout = endTime - System.nanoTime();
8584

8685
LOGGER.info(format("No server chosen by %s from cluster description %s. Waiting for %d ms before timing out",
87-
serverSelector, curDescription, TimeUnit.MILLISECONDS.convert(timeout, NANOSECONDS)));
86+
serverSelector, curDescription, MILLISECONDS.convert(timeout, NANOSECONDS)));
8887

8988
if (!currentPhase.await(timeout, NANOSECONDS)) {
90-
throw new MongoTimeoutException(format("Timed out while waiting for a server that satisfies the selector: %s "
91-
+ "after %d %s", serverSelector, timeout, NANOSECONDS));
89+
throw new MongoTimeoutException(format("Timed out while waiting for a server that matches %s after %d ms",
90+
serverSelector, MILLISECONDS.convert(timeout, NANOSECONDS)));
9291
}
9392
currentPhase = phase.get();
9493
curDescription = description;
9594
serverDescriptions = serverSelector.choose(curDescription);
9695
}
9796
} catch (InterruptedException e) {
98-
throw new MongoInterruptedException(format("Interrupted while waiting for a server that satisfies server selector %s ",
99-
serverSelector), e);
97+
throw new MongoInterruptedException(format("Interrupted while waiting for a server that matches %s ", serverSelector), e);
10098
}
10199
}
102100

@@ -117,18 +115,18 @@ public ClusterDescription getDescription(final long maxWaitTime, final TimeUnit
117115
final long timeout = endTime - System.nanoTime();
118116

119117
LOGGER.info(format("Cluster description not yet available. Waiting for %d ms before timing out",
120-
TimeUnit.MILLISECONDS.convert(timeout, NANOSECONDS)));
118+
MILLISECONDS.convert(timeout, NANOSECONDS)));
121119

122120
if (!currentPhase.await(timeout, NANOSECONDS)) {
123-
throw new MongoTimeoutException(format("Timed out while waiting for the cluster description after waiting %d %s",
124-
timeout, NANOSECONDS));
121+
throw new MongoTimeoutException(format("Timed out while waiting to connect after %d ms",
122+
MILLISECONDS.convert(timeout, NANOSECONDS)));
125123
}
126124
currentPhase = phase.get();
127125
curDescription = description;
128126
}
129127
return curDescription;
130128
} catch (InterruptedException e) {
131-
throw new MongoInterruptedException(format("Interrupted while waiting for the cluster description"), e);
129+
throw new MongoInterruptedException(format("Interrupted while waiting to connect"), e);
132130
}
133131
}
134132

src/main/com/mongodb/CompositeServerSelector.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public List<ServerDescription> choose(final ClusterDescription clusterDescriptio
4343

4444
@Override
4545
public String toString() {
46-
return "CompositeServerSelector{"
47-
+ "serverSelectors=" + serverSelectors
48-
+ '}';
46+
return "{"
47+
+ "serverSelectors=" + serverSelectors
48+
+ '}';
4949
}
50-
}
50+
}

src/main/com/mongodb/DBTCPConnector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ private synchronized ServerSelector getPrefixedServerSelector() {
562562
if (prefixedServerSelector == null) {
563563
ClusterDescription clusterDescription = getClusterDescription();
564564
if (clusterDescription.getConnectionMode() == Multiple && clusterDescription.getType() == Sharded) {
565-
prefixedServerSelector = new StickyHAShardedClusterServerSelector();
565+
prefixedServerSelector = new MongosHAServerSelector();
566566
} else {
567567
prefixedServerSelector = new NoOpServerSelector();
568568
}

src/main/com/mongodb/LatencyMinimizingServerSelector.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@
2121
import java.util.Set;
2222
import java.util.concurrent.TimeUnit;
2323

24+
import static java.util.concurrent.TimeUnit.MILLISECONDS;
25+
import static java.util.concurrent.TimeUnit.NANOSECONDS;
26+
2427
class LatencyMinimizingServerSelector implements ServerSelector {
2528

26-
private final long acceptableLatencyDifference;
27-
private final TimeUnit timeUnit;
29+
private final long acceptableLatencyDifferenceNanos;
2830

2931
LatencyMinimizingServerSelector(final long acceptableLatencyDifference, final TimeUnit timeUnit) {
30-
this.acceptableLatencyDifference = acceptableLatencyDifference;
31-
this.timeUnit = timeUnit;
32+
this.acceptableLatencyDifferenceNanos = NANOSECONDS.convert(acceptableLatencyDifference, timeUnit);
3233
}
3334

3435
@Override
@@ -39,8 +40,7 @@ public List<ServerDescription> choose(final ClusterDescription clusterDescriptio
3940
@Override
4041
public String toString() {
4142
return "LatencyMinimizingServerSelector{"
42-
+ "acceptableLatencyDifference=" + acceptableLatencyDifference
43-
+ ", timeUnit=" + timeUnit
43+
+ "acceptableLatencyDifference=" + MILLISECONDS.convert(acceptableLatencyDifferenceNanos, NANOSECONDS) + " ms"
4444
+ '}';
4545
}
4646

@@ -64,7 +64,7 @@ private List<ServerDescription> getServersWithAcceptableLatencyDifference(final
6464
if (!cur.isOk()) {
6565
continue;
6666
}
67-
if (cur.getAveragePingTimeNanos() - TimeUnit.NANOSECONDS.convert(acceptableLatencyDifference, timeUnit) <= bestPingTime) {
67+
if (cur.getAveragePingTimeNanos() - acceptableLatencyDifferenceNanos <= bestPingTime) {
6868
goodSecondaries.add(cur);
6969
}
7070
}

src/main/com/mongodb/StickyHAShardedClusterServerSelector.java renamed to src/main/com/mongodb/MongosHAServerSelector.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
import java.util.List;
2323
import java.util.Set;
2424

25-
class StickyHAShardedClusterServerSelector implements ServerSelector {
26-
private ServerAddress stickyMongos;
25+
class MongosHAServerSelector implements ServerSelector {
26+
private ServerAddress stickTo;
2727
private Set<ServerAddress> consideredServers = new HashSet<ServerAddress>();
2828

2929
@Override
@@ -36,9 +36,9 @@ public List<ServerDescription> choose(final ClusterDescription clusterDescriptio
3636
Set<ServerAddress> okServers = getOkServers(clusterDescription);
3737

3838
synchronized (this) {
39-
if (!consideredServers.containsAll(okServers) || !okServers.contains(stickyMongos)) {
40-
if (stickyMongos != null && !okServers.contains(stickyMongos)) {
41-
stickyMongos = null;
39+
if (!consideredServers.containsAll(okServers) || !okServers.contains(stickTo)) {
40+
if (stickTo != null && !okServers.contains(stickTo)) {
41+
stickTo = null;
4242
consideredServers.clear();
4343
}
4444
ServerDescription fastestServer = null;
@@ -48,22 +48,22 @@ public List<ServerDescription> choose(final ClusterDescription clusterDescriptio
4848
}
4949
}
5050
if (fastestServer != null) {
51-
stickyMongos = fastestServer.getAddress();
51+
stickTo = fastestServer.getAddress();
5252
consideredServers.addAll(okServers);
5353
}
5454
}
55-
if (stickyMongos == null) {
55+
if (stickTo == null) {
5656
return Collections.emptyList();
5757
} else {
58-
return Arrays.asList(clusterDescription.getByServerAddress(stickyMongos));
58+
return Arrays.asList(clusterDescription.getByServerAddress(stickTo));
5959
}
6060
}
6161
}
6262

6363
@Override
6464
public String toString() {
65-
return "StickyHAShardedClusterServerSelector{"
66-
+ "stickyMongos=" + stickyMongos
65+
return "MongosHAServerSelector{"
66+
+ (stickTo == null ? "" : "stickTo=" + stickTo)
6767
+ '}';
6868
}
6969

src/test/com/mongodb/StickyHAShardedClusterServerSelectorTest.java renamed to src/test/com/mongodb/MongosHAServerSelectorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@
3434
import static org.junit.Assert.assertEquals;
3535

3636

37-
public class StickyHAShardedClusterServerSelectorTest {
37+
public class MongosHAServerSelectorTest {
3838

39-
private StickyHAShardedClusterServerSelector selector;
39+
private MongosHAServerSelector selector;
4040
private ServerDescription first;
4141
private ServerDescription secondConnecting;
4242
private ServerDescription secondConnected;
4343

4444
@Before
4545
public void setUp() throws UnknownHostException {
46-
selector = new StickyHAShardedClusterServerSelector();
46+
selector = new MongosHAServerSelector();
4747
first = ServerDescription.builder()
4848
.state(Connected)
4949
.address(new ServerAddress())

0 commit comments

Comments
 (0)