Skip to content

Commit 83db912

Browse files
committed
JAVA-2046: When read preference is set to null on DBCursor, it should default to the value for the DBCollection from which it came
1 parent 8a20b80 commit 83db912

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

driver/src/main/com/mongodb/DBCursor.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -780,7 +780,10 @@ public DBCursor setReadPreference(final ReadPreference readPreference) {
780780
* @return the readPreference used by this cursor
781781
*/
782782
public ReadPreference getReadPreference() {
783-
return readPreference;
783+
if (readPreference != null) {
784+
return readPreference;
785+
}
786+
return collection.getReadPreference();
784787
}
785788

786789

driver/src/test/unit/com/mongodb/DBCursorSpecification.groovy

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,28 @@ import static spock.util.matcher.HamcrestSupport.expect
2929

3030
class DBCursorSpecification extends Specification {
3131

32+
def 'should get and set read preference'() {
33+
when:
34+
def collection = new DB(getMongoClient(), 'myDatabase', new TestOperationExecutor([])).getCollection('test')
35+
collection.setReadPreference(ReadPreference.nearest())
36+
def cursor = new DBCursor(collection, new BasicDBObject(), new BasicDBObject(), ReadPreference.nearest())
37+
38+
then:
39+
cursor.readPreference == ReadPreference.nearest()
40+
41+
when:
42+
cursor.setReadPreference(ReadPreference.secondary())
43+
44+
then:
45+
cursor.readPreference == ReadPreference.secondary()
46+
47+
when:
48+
cursor.setReadPreference(null)
49+
50+
then:
51+
cursor.readPreference == ReadPreference.nearest()
52+
}
53+
3254
def 'should get and set read concern'() {
3355
when:
3456
def collection = new DB(getMongoClient(), 'myDatabase', new TestOperationExecutor([])).getCollection('test')

0 commit comments

Comments
 (0)