Skip to content

Commit 5b2eb87

Browse files
committed
JAVA-2043: In ConnectionString, set read preference based on value of slaveok option rather than assume the value is true.
1 parent 6acd53d commit 5b2eb87

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

driver-core/src/main/com/mongodb/ConnectionString.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,9 @@ private Map<String, List<String>> parseOptions(final String optionsPart) {
527527
}
528528
// handle legacy slaveok settings
529529
if (optionsMap.containsKey("slaveok") && !optionsMap.containsKey("readpreference")) {
530-
optionsMap.put("readpreference", singletonList("secondaryPreferred"));
530+
String readPreference = parseBoolean(getLastValue(optionsMap, "slaveok"), "slaveok")
531+
? "secondaryPreferred" : "primary";
532+
optionsMap.put("readpreference", singletonList(readPreference));
531533
if (LOGGER.isWarnEnabled()) {
532534
LOGGER.warn("Uri option 'slaveok' has been deprecated, use 'readpreference' instead.");
533535
}

driver-core/src/test/unit/com/mongodb/ConnectionStringSpecification.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import static com.mongodb.MongoCredential.createMongoCRCredential
2525
import static com.mongodb.MongoCredential.createMongoX509Credential
2626
import static com.mongodb.MongoCredential.createPlainCredential
2727
import static com.mongodb.MongoCredential.createScramSha1Credential
28+
import static com.mongodb.ReadPreference.primary
2829
import static com.mongodb.ReadPreference.secondaryPreferred
2930
import static java.util.Arrays.asList
3031
import static java.util.concurrent.TimeUnit.MILLISECONDS
@@ -103,7 +104,7 @@ class ConnectionStringSpecification extends Specification {
103104
connectionString.getConnectTimeout() == 2500;
104105
connectionString.getSocketTimeout() == 5500;
105106
connectionString.getWriteConcern() == new WriteConcern(1, 2500, true);
106-
connectionString.getReadPreference() == ReadPreference.primary() ;
107+
connectionString.getReadPreference() == primary() ;
107108
connectionString.getRequiredReplicaSetName() == 'test'
108109
connectionString.getSslEnabled()
109110

@@ -256,6 +257,7 @@ class ConnectionStringSpecification extends Specification {
256257
new ConnectionString('mongodb://localhost/' +
257258
'?readPreference=secondaryPreferred') | secondaryPreferred()
258259
new ConnectionString('mongodb://localhost/?slaveOk=true') | secondaryPreferred()
260+
new ConnectionString('mongodb://localhost/?slaveOk=false') | primary()
259261
new ConnectionString('mongodb://localhost/' +
260262
'?readPreference=secondaryPreferred' +
261263
'&readPreferenceTags=dc:ny,rack:1' +

0 commit comments

Comments
 (0)