Skip to content

Commit 5bcd2f8

Browse files
committed
JAVA-1285: Take two
1 parent 06e567c commit 5bcd2f8

8 files changed

+33
-24
lines changed

src/main/com/mongodb/BaseCluster.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,14 @@ public BaseCluster(final String clusterId, final ClusterSettings settings, final
5959
}
6060

6161
@Override
62-
public Server getServer(final ServerSelector serverSelector, final long maxWaitTime, final TimeUnit maxWaitTimeTimeUnit,
63-
final long connectRetryFrequency, final TimeUnit connectRetryFrequencyTimeUnit) {
62+
public Server getServer(final ServerSelector serverSelector, final long maxWaitTime, final TimeUnit timeUnit) {
6463
isTrue("open", !isClosed());
6564

6665
try {
6766
CountDownLatch currentPhase = phase.get();
6867
ClusterDescription curDescription = description;
6968
List<ServerDescription> serverDescriptions = serverSelector.choose(curDescription);
70-
final long endTime = System.nanoTime() + NANOSECONDS.convert(maxWaitTime, maxWaitTimeTimeUnit);
69+
final long endTime = System.nanoTime() + NANOSECONDS.convert(maxWaitTime, timeUnit);
7170
boolean selectionFailureLogged = false;
7271
while (true) {
7372
throwIfIncompatible(curDescription);
@@ -81,17 +80,18 @@ public Server getServer(final ServerSelector serverSelector, final long maxWaitT
8180

8281
if (System.nanoTime() > endTime) {
8382
throw new MongoTimeoutException(format("Timed out while waiting for a server that matches %s after %d ms",
84-
serverSelector, MILLISECONDS.convert(maxWaitTime, maxWaitTimeTimeUnit)));
83+
serverSelector, MILLISECONDS.convert(maxWaitTime, timeUnit)));
8584
}
8685

8786
if (!selectionFailureLogged) {
8887
LOGGER.info(format("No server chosen by %s from cluster description %s. Waiting for %d ms before timing out",
89-
serverSelector, curDescription, MILLISECONDS.convert(maxWaitTime, maxWaitTimeTimeUnit)));
88+
serverSelector, curDescription, MILLISECONDS.convert(maxWaitTime, timeUnit)));
9089
selectionFailureLogged = true;
9190
}
91+
9292
connect();
9393

94-
currentPhase.await(connectRetryFrequency, connectRetryFrequencyTimeUnit);
94+
currentPhase.await(serverFactory.getSettings().getHeartbeatConnectRetryFrequency(NANOSECONDS), NANOSECONDS);
9595

9696
currentPhase = phase.get();
9797
curDescription = description;
@@ -103,31 +103,30 @@ public Server getServer(final ServerSelector serverSelector, final long maxWaitT
103103
}
104104

105105
@Override
106-
public ClusterDescription getDescription(final long maxWaitTime, final TimeUnit maxWaitTimeTimeUnit,
107-
final long connectRetryFrequency, final TimeUnit connectRetryFrequencyTimeUnit) {
106+
public ClusterDescription getDescription(final long maxWaitTime, final TimeUnit timeUnit) {
108107
isTrue("open", !isClosed());
109108

110109
try {
111110
CountDownLatch currentPhase = phase.get();
112111
ClusterDescription curDescription = description;
113-
final long endTime = System.nanoTime() + NANOSECONDS.convert(maxWaitTime, maxWaitTimeTimeUnit);
112+
final long endTime = System.nanoTime() + NANOSECONDS.convert(maxWaitTime, timeUnit);
114113
boolean selectionFailureLogged = false;
115114
while (curDescription.getType() == ClusterType.Unknown) {
116115

117116
if (System.nanoTime() > endTime) {
118117
throw new MongoTimeoutException(format("Timed out while waiting to connect after %d ms",
119-
MILLISECONDS.convert(maxWaitTime, maxWaitTimeTimeUnit)));
118+
MILLISECONDS.convert(maxWaitTime, timeUnit)));
120119
}
121120

122121
if (!selectionFailureLogged) {
123122
LOGGER.info(format("Cluster description not yet available. Waiting for %d ms before timing out",
124-
MILLISECONDS.convert(maxWaitTime, maxWaitTimeTimeUnit)));
123+
MILLISECONDS.convert(maxWaitTime, timeUnit)));
125124
selectionFailureLogged = true;
126125
}
127126

128127
connect();
129128

130-
currentPhase.await(connectRetryFrequency, connectRetryFrequencyTimeUnit);
129+
currentPhase.await(serverFactory.getSettings().getHeartbeatConnectRetryFrequency(NANOSECONDS), NANOSECONDS);
131130

132131
currentPhase = phase.get();
133132
curDescription = description;

src/main/com/mongodb/Cluster.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,9 @@
2020

2121
interface Cluster {
2222

23-
ClusterDescription getDescription(final long maxWaitTime, final TimeUnit maxWaitTimeTimeUnit,
24-
long connectRetryFrequency, TimeUnit connectRetryFrequencyTimeUnit);
23+
ClusterDescription getDescription(final long maxWaitTime, final TimeUnit timeUnit);
2524

26-
Server getServer(ServerSelector serverSelector, final long maxWaitTime, final TimeUnit maxWaitTimeTimeUnit,
27-
long connectRetryFrequency, TimeUnit connectRetryFrequencyTimeUnit);
25+
Server getServer(ServerSelector serverSelector, final long maxWaitTime, final TimeUnit timeUnit);
2826

2927
void close();
3028

src/main/com/mongodb/ClusterableServerFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,6 @@
1818

1919
interface ClusterableServerFactory {
2020
ClusterableServer create(ServerAddress serverAddress);
21+
22+
ServerSettings getSettings();
2123
}

src/main/com/mongodb/DBTCPConnector.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -393,8 +393,8 @@ private boolean shouldRetryQuery(ReadPreference readPreference, final DBCollecti
393393
}
394394

395395
private ClusterDescription getClusterDescription() {
396-
return cluster.getDescription(getClusterWaitTimeMS(), MILLISECONDS,
397-
_mongo.getMongoOptions().heartbeatConnectRetryFrequencyMS, MILLISECONDS);
396+
return cluster.getDescription(getClusterWaitTimeMS(), MILLISECONDS
397+
);
398398
}
399399

400400
private int getClusterWaitTimeMS() {
@@ -652,7 +652,7 @@ MyPort getMyPort() {
652652
}
653653

654654
private Server getServer(final ServerSelector serverSelector) {
655-
return cluster.getServer(serverSelector, getClusterWaitTimeMS(), MILLISECONDS,
656-
_mongo.getMongoOptions().heartbeatConnectRetryFrequencyMS, MILLISECONDS);
655+
return cluster.getServer(serverSelector, getClusterWaitTimeMS(), MILLISECONDS
656+
);
657657
}
658658
}

src/main/com/mongodb/DefaultClusterableServerFactory.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,9 @@ public ClusterableServer create(final ServerAddress serverAddress) {
4646
new JMXConnectionPoolListener(mongo.getMongoOptions().getDescription())),
4747
mongo);
4848
}
49+
50+
@Override
51+
public ServerSettings getSettings() {
52+
return settings;
53+
}
4954
}

src/test/com/mongodb/MultiServerClusterSpecification.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ class MultiServerClusterSpecification extends Specification {
280280
cluster.close()
281281

282282
when:
283-
cluster.getServer(new ReadPreferenceServerSelector(ReadPreference.primary()), 1, SECONDS, 1, SECONDS)
283+
cluster.getServer(new ReadPreferenceServerSelector(ReadPreference.primary()), 1, SECONDS)
284284

285285
then:
286286
thrown(IllegalStateException)
@@ -428,7 +428,7 @@ class MultiServerClusterSpecification extends Specification {
428428
}
429429

430430
def getClusterDescription(MultiServerCluster cluster) {
431-
cluster.getDescription(1, MILLISECONDS, 1, MILLISECONDS)
431+
cluster.getDescription(1, MILLISECONDS)
432432
}
433433

434434
def getServerDescription(ServerAddress server) {

src/test/com/mongodb/SingleServerClusterSpecification.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class SingleServerClusterSpecification extends Specification {
151151
sendNotification(firstServer, getBuilder(firstServer).minWireVersion(1000).maxWireVersion(1000).build())
152152

153153
when:
154-
cluster.getServer(new ReadPreferenceServerSelector(ReadPreference.primary()), 1, SECONDS, 1, SECONDS)
154+
cluster.getServer(new ReadPreferenceServerSelector(ReadPreference.primary()), 1, SECONDS)
155155

156156
then:
157157
thrown(MongoIncompatibleDriverException)
@@ -186,7 +186,7 @@ class SingleServerClusterSpecification extends Specification {
186186
}
187187

188188
def getClusterDescription(Cluster cluster) {
189-
cluster.getDescription(1, MILLISECONDS, 1, MILLISECONDS)
189+
cluster.getDescription(1, MILLISECONDS)
190190
}
191191

192192
def getServerDescriptions() {

src/test/com/mongodb/TestClusterableServerFactory.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ public ClusterableServer create(final ServerAddress serverAddress) {
2727
return addressToServerMap.get(serverAddress);
2828
}
2929

30+
@Override
31+
public ServerSettings getSettings() {
32+
return ServerSettings.builder().build();
33+
}
34+
3035
public void close() {
3136

3237
}

0 commit comments

Comments
 (0)