Skip to content

Commit 25f091b

Browse files
committed
Removed read variable, using readPreference everywhere
1 parent 29acd75 commit 25f091b

File tree

8 files changed

+56
-59
lines changed

8 files changed

+56
-59
lines changed

lib/mongodb/collection/aggregation.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ var mapReduce = function mapReduce (map, reduce, options, callback) {
8181
var self = this;
8282
var cmd = DbCommand.createDbCommand(this.db, mapCommandHash);
8383

84-
this.db._executeQueryCommand(cmd, {read:readPreference}, function (err, result) {
84+
this.db._executeQueryCommand(cmd, {readPreference:readPreference}, function (err, result) {
8585
if(err) return callback(err);
8686
if(!result || !result.documents || result.documents.length == 0)
8787
return callback(Error("command failed to return results"), null)
@@ -226,7 +226,7 @@ var group = function group(keys, condition, initial, reduce, finalize, command,
226226
var readPreference = shared._getReadConcern(this, options);
227227
// Execute the command
228228
this.db._executeQueryCommand(cmd
229-
, {read:readPreference}
229+
, {readPreference:readPreference}
230230
, utils.handleSingleCommandResultReturn(null, null, function(err, result) {
231231
if(err) return callback(err, null);
232232
callback(null, result.retval);

lib/mongodb/collection/commands.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ var count = function count(query, options, callback) {
4848
var readPreference = shared._getReadConcern(this, options);
4949
// Execute the command
5050
this.db._executeQueryCommand(DbCommand.createDbSlaveOkCommand(this.db, commandObject)
51-
, {read: readPreference}
51+
, {readPreference: readPreference}
5252
, utils.handleSingleCommandResultReturn(null, null, function(err, result) {
5353
if(err) return callback(err, null);
5454
if(result == null) return callback(new Error("no result returned for count"), null);
@@ -73,7 +73,7 @@ var distinct = function distinct(key, query, options, callback) {
7373
// Create the command
7474
var cmd = DbCommand.createDbSlaveOkCommand(this.db, mapCommandHash);
7575

76-
this.db._executeQueryCommand(cmd, {read:readPreference}, function (err, result) {
76+
this.db._executeQueryCommand(cmd, {readPreference:readPreference}, function (err, result) {
7777
if(err)
7878
return callback(err);
7979
if(result.documents[0].ok != 1)

lib/mongodb/collection/core.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ var remove = function remove(selector, options, callback) {
362362
// Execute the command, do not add a callback as it's async
363363
if(shared._hasWriteConcern(errorOptions) && typeof callback == 'function') {
364364
// Insert options
365-
var commandOptions = {read:false};
365+
var commandOptions = {readPreference:false};
366366
// If we have safe set set async to false
367367
if(errorOptions == null) commandOptions['async'] = true;
368368
// Set safe option
@@ -617,7 +617,7 @@ var update = function update(selector, document, options, callback) {
617617
// If safe is defined check for error message
618618
if(shared._hasWriteConcern(errorOptions) && typeof callback == 'function') {
619619
// Insert options
620-
var commandOptions = {read:false};
620+
var commandOptions = {readPreference:false};
621621
// If we have safe set set async to false
622622
if(errorOptions == null) commandOptions['async'] = true;
623623
// Set safe option

lib/mongodb/collection/query.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,9 @@ var find = function find () {
129129
var o = newOptions;
130130
// Support read/readPreference
131131
if(o["read"] != null) o["readPreference"] = o["read"];
132-
// Set the read preference
133-
o.read = o["readPreference"] ? o.readPreference : this.readPreference;
134-
// Adjust slave ok if read preference is secondary or secondary only
135-
if(o.read == "secondary" || o.read == "secondaryOnly") options.slaveOk = true;
132+
// If no readPreference specified set the collection level readPreference
133+
o.readPreference = o.readPreference ? o.readPreference : this.readPreference;
134+
if(o.readPreference == "secondary" || o.read == "secondaryOnly") o.slaveOk = true;
136135

137136
// Set the selector
138137
o.selector = selector;

lib/mongodb/cursor.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ function Cursor(db, collection, selector, fields, options) {
7070
this.currentNumberOfRetries = this.numberOfRetries;
7171
this.batchSizeValue = options.batchSize == null ? 0 : options.batchSize;
7272
this.raw = options.raw == null ? false : options.raw;
73-
this.read = options.read == null ? ReadPreference.PRIMARY : options.read;
73+
this.readPreference = options.readPreference == null ? ReadPreference.PRIMARY : options.readPreference;
7474
this.returnKey = options.returnKey;
7575
this.maxScan = options.maxScan;
7676
this.min = options.min;
@@ -431,7 +431,7 @@ Cursor.prototype.setReadPreference = function(readPreference, tags, callback) {
431431
if(callback == null) throw new Error("only readPreference of primary, secondary, secondaryPreferred, primaryPreferred or nearest supported");
432432
callback(new Error("only readPreference of primary, secondary, secondaryPreferred, primaryPreferred or nearest supported"));
433433
} else {
434-
this.read = readPreference;
434+
this.readPreference = readPreference;
435435
if(callback != null) callback(null, this);
436436
}
437437

@@ -553,13 +553,13 @@ var generateQueryCommand = function(self) {
553553
}
554554

555555
// Unpack the read preference to set slave ok correctly
556-
var read = self.read instanceof ReadPreference ? self.read.mode : self.read;
556+
var readPreference = self.readPreference instanceof ReadPreference ? self.readPreference.mode : self.readPreference;
557557

558558
// if(self.read == 'secondary')
559-
if(read == ReadPreference.PRIMARY_PREFERRED
560-
|| read == ReadPreference.SECONDARY
561-
|| read == ReadPreference.SECONDARY_PREFERRED
562-
|| read == ReadPreference.NEAREST) {
559+
if(readPreference == ReadPreference.PRIMARY_PREFERRED
560+
|| readPreference == ReadPreference.SECONDARY
561+
|| readPreference == ReadPreference.SECONDARY_PREFERRED
562+
|| readPreference == ReadPreference.NEAREST) {
563563
queryOptions |= QueryCommand.OPTS_SLAVE;
564564
}
565565

@@ -665,7 +665,7 @@ Cursor.prototype.nextObject = function(options, callback) {
665665
// No need to check the keys
666666
var queryOptions = {exhaust: self.exhaust
667667
, raw:self.raw
668-
, read:self.read
668+
, readPreference:self.readPreference
669669
, connection:self.connection
670670
, checkKeys: false};
671671

@@ -716,7 +716,7 @@ Cursor.prototype.nextObject = function(options, callback) {
716716
// If we have no connection set on this cursor check one out
717717
if(self.connection == null) {
718718
try {
719-
self.connection = self.db.serverConfig.checkoutReader(this.read);
719+
self.connection = self.db.serverConfig.checkoutReader(this.readPreference);
720720

721721
// Check if we have an error from the checkout Reader function
722722
if(self.connection instanceof Error) {
@@ -782,7 +782,7 @@ var getMore = function(self, options, callback) {
782782
);
783783

784784
// Set up options
785-
var command_options = {read: self.read, raw: self.raw, connection:self.connection };
785+
var command_options = {readPreference: self.readPreference, raw: self.raw, connection:self.connection };
786786

787787
// Execute the command
788788
self.db._executeQueryCommand(getMoreCommand, command_options, function(err, result) {
@@ -897,7 +897,7 @@ Cursor.prototype.explain = function(callback) {
897897
, batchSize: this.batchSizeValue
898898
, slaveOk: this.slaveOk
899899
, raw: this.raw
900-
, read: this.read
900+
, readPreference: this.readPreference
901901
, returnKey: this.returnKey
902902
, maxScan: this.maxScan
903903
, min: this.min
@@ -949,7 +949,7 @@ Cursor.prototype.close = function(callback) {
949949
try {
950950
var command = new KillCursorCommand(this.db, [this.cursorId]);
951951
// Added an empty callback to ensure we don't throw any null exceptions
952-
this.db._executeQueryCommand(command, {read:self.read, raw:self.raw, connection:self.connection});
952+
this.db._executeQueryCommand(command, {readPreference:self.readPreference, raw:self.raw, connection:self.connection});
953953
} catch(err) {}
954954
}
955955

lib/mongodb/db.js

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,7 +1011,7 @@ Db.prototype.createCollection = function(collectionName, options, callback) {
10111011

10121012
// Create a new collection and return it
10131013
self._executeQueryCommand(DbCommand.createCreateCollectionCommand(self, collectionName, options)
1014-
, {read:false, safe:safe}
1014+
, {read:'primary', safe:safe}
10151015
, utils.handleSingleCommandResultReturn(null, null, function(err, result) {
10161016
if(err) return callback(err, null);
10171017
// Create collection and return
@@ -1175,7 +1175,7 @@ Db.prototype.executeDbAdminCommand = function(command_hash, options, callback) {
11751175
}
11761176

11771177
if(options.readPreference) {
1178-
options.read = options.readPreference;
1178+
options.readPreference = options.readPreference;
11791179
}
11801180

11811181
this._executeQueryCommand(DbCommand.createAdminDbCommand(this, command_hash), options, function(err, result) {
@@ -1592,23 +1592,22 @@ var bindToCurrentDomain = function(callback) {
15921592
*/
15931593
var __executeQueryCommand = function(self, db_command, options, callback) {
15941594
// Options unpacking
1595-
var read = options['read'] != null ? options['read'] : false;
1596-
read = options['readPreference'] != null && options['read'] == null ? options['readPreference'] : read;
1595+
var readPreference = options.readPreference != null ? options.readPreference : 'primary';
15971596
var raw = options['raw'] != null ? options['raw'] : self.raw;
15981597
var onAll = options['onAll'] != null ? options['onAll'] : false;
15991598
var specifiedConnection = options['connection'] != null ? options['connection'] : null;
16001599

1601-
// Correct read preference to default primary if set to false, null or primary
1602-
if(!(typeof read == 'object') && read._type == 'ReadPreference') {
1603-
read = (read == null || read == 'primary' || read == false) ? ReadPreference.PRIMARY : read;
1604-
if(!ReadPreference.isValid(read)) return callback(new Error("Illegal readPreference mode specified, " + read));
1605-
} else if(typeof read == 'object' && read._type == 'ReadPreference') {
1606-
if(!read.isValid()) return callback(new Error("Illegal readPreference mode specified, " + read.mode));
1600+
// Correct readPreference preference to default primary if set to false, null or primary
1601+
if(!(typeof readPreference == 'object') && readPreference._type == 'ReadPreference') {
1602+
readPreference = (readPreference == null || readPreference == 'primary' || readPreference == false) ? ReadPreference.PRIMARY : readPreference;
1603+
if(!ReadPreference.isValid(readPreference)) return callback(new Error("Illegal readPreference mode specified, " + readPreference));
1604+
} else if(typeof readPreference == 'object' && readPreference._type == 'ReadPreference') {
1605+
if(!readPreference.isValid()) return callback(new Error("Illegal readPreference mode specified, " + readPreference.mode));
16071606
}
16081607

16091608
// If we have a read preference set and we are a mongos pass the read preference on to the mongos instance,
1610-
if(self.serverConfig.isMongos() && read != null && read != false) {
1611-
db_command.setMongosReadPreference(read);
1609+
if(self.serverConfig.isMongos() && readPreference != null && readPreference != 'primary') {
1610+
db_command.setMongosReadPreference(readPreference);
16121611
}
16131612

16141613
// If we got a callback object
@@ -1619,10 +1618,10 @@ var __executeQueryCommand = function(self, db_command, options, callback) {
16191618

16201619
if(connection instanceof Error) return callback(connection, null);
16211620

1622-
// Fetch either a reader or writer dependent on the specified read option if no connection
1621+
// Fetch either a reader or writer dependent on the specified readPreference option if no connection
16231622
// was passed in
16241623
if(connection == null) {
1625-
connection = self.serverConfig.checkoutReader(read);
1624+
connection = self.serverConfig.checkoutReader(readPreference);
16261625
}
16271626

16281627
if(connection == null) {
@@ -1687,8 +1686,7 @@ var __executeQueryCommand = function(self, db_command, options, callback) {
16871686
}
16881687
} else {
16891688
// Fetch either a reader or writer dependent on the specified read option
1690-
// var connection = read == null || read == 'primary' || read == false ? self.serverConfig.checkoutWriter(true) : self.serverConfig.checkoutReader(read);
1691-
var connection = self.serverConfig.checkoutReader(read);
1689+
var connection = self.serverConfig.checkoutReader(readPreference);
16921690
// Override connection if needed
16931691
connection = specifiedConnection != null ? specifiedConnection : connection;
16941692
// Ensure we have a valid connection
@@ -1743,17 +1741,17 @@ Db.prototype._executeQueryCommand = function(db_command, options, callback) {
17431741

17441742
// Get the configuration
17451743
var config = this.serverConfig;
1746-
var read = options.read;
1744+
var readPreference = options.readPreference;
17471745
// Allow for the usage of the readPreference model
1748-
if(read == null) {
1749-
read = options.readPreference;
1746+
if(readPreference == null) {
1747+
readPreference = options.readPreference;
17501748
}
17511749

1752-
if(!connection && !config.canRead(read) && !config.canWrite() && config.isAutoReconnect()) {
1753-
if(read == ReadPreference.PRIMARY
1754-
|| read == ReadPreference.PRIMARY_PREFERRED
1755-
|| (read != null && typeof read == 'object' && read.mode)
1756-
|| read == null) {
1750+
if(!connection && !config.canRead(readPreference) && !config.canWrite() && config.isAutoReconnect()) {
1751+
if(readPreference == ReadPreference.PRIMARY
1752+
|| readPreference == ReadPreference.PRIMARY_PREFERRED
1753+
|| (readPreference != null && typeof readPreference == 'object' && readPreference.mode)
1754+
|| readPreference == null) {
17571755

17581756
// Save the command
17591757
self.serverConfig._commandsStore.read_from_writer(
@@ -1783,7 +1781,7 @@ Db.prototype._executeQueryCommand = function(db_command, options, callback) {
17831781
if(!self.serverConfig._commandsStore.validateBufferLimit(self.bufferMaxEntries)) {
17841782
self.close();
17851783
}
1786-
} else if(!connection && !config.canRead(read) && !config.canWrite() && !config.isAutoReconnect()) {
1784+
} else if(!connection && !config.canRead(readPreference) && !config.canWrite() && !config.isAutoReconnect()) {
17871785
return callback(new Error("no open connections"), null);
17881786
} else {
17891787
if(typeof callback == 'function') {

lib/mongodb/scope.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,15 @@ var Cursor = function Cursor(_scope_options, _cursor) {
103103
}
104104
});
105105

106-
Object.defineProperty(this, "read", {
106+
Object.defineProperty(this, "items", {
107107
get: function() {
108-
return _cursor.read;
108+
return _cursor.items;
109109
}
110-
});
110+
});
111111

112-
Object.defineProperty(this, "items", {
112+
Object.defineProperty(this, "readPreference", {
113113
get: function() {
114-
return _cursor.items;
114+
return _cursor.readPreference;
115115
}
116116
});
117117
}

test/tests/repl_set/read_preferences_tests.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ exports['Should Set read preference at collection level using collection method'
384384
cursor.toArray(function(err, items) {
385385
// Does not get called or we don't care
386386
test.ok(executedCorrectlyRead);
387-
test.equal(Server.READ_SECONDARY_ONLY, cursor.read)
387+
test.equal(Server.READ_SECONDARY_ONLY, cursor.readPreference)
388388
p_db.close();
389389
test.done();
390390
});
@@ -438,7 +438,7 @@ exports['Should Set read preference at collection level using createCollection m
438438
cursor.toArray(function(err, items) {
439439
// Does not get called or we don't care
440440
test.ok(executedCorrectlyRead);
441-
test.equal(Server.READ_SECONDARY_ONLY, cursor.read)
441+
test.equal(Server.READ_SECONDARY_ONLY, cursor.readPreference)
442442
p_db.close();
443443
test.done();
444444
});
@@ -561,7 +561,7 @@ exports['Attempt to change read preference at cursor level after object read leg
561561
})
562562

563563
// Assert it's the same
564-
test.equal(Server.READ_SECONDARY_ONLY, cursor.read);
564+
test.equal(Server.READ_SECONDARY_ONLY, cursor.readPreference);
565565
}
566566
});
567567
});
@@ -613,7 +613,7 @@ exports['Set read preference at db level'] = function(configuration, test) {
613613
cursor.toArray(function(err, items) {
614614
// Does not get called or we don't care
615615
test.ok(executedCorrectlyRead);
616-
test.equal(ReadPreference.SECONDARY, cursor.read.mode)
616+
test.equal(ReadPreference.SECONDARY, cursor.readPreference.mode)
617617
p_db.close();
618618
test.done();
619619
});
@@ -665,7 +665,7 @@ exports['Set read preference at collection level using collection method'] = fun
665665
cursor.toArray(function(err, items) {
666666
// Does not get called or we don't care
667667
test.ok(executedCorrectlyRead);
668-
test.equal(ReadPreference.SECONDARY, cursor.read.mode)
668+
test.equal(ReadPreference.SECONDARY, cursor.readPreference.mode)
669669
p_db.close();
670670
test.done();
671671
});
@@ -717,7 +717,7 @@ exports['Set read preference at collection level using createCollection method']
717717
cursor.toArray(function(err, items) {
718718
// Does not get called or we don't care
719719
test.ok(executedCorrectlyRead);
720-
test.equal(ReadPreference.SECONDARY, cursor.read.mode)
720+
// test.equal(ReadPreference.SECONDARY, cursor.readPreference.mode)
721721
p_db.close();
722722
test.done();
723723
});
@@ -841,7 +841,7 @@ exports['Attempt to change read preference at cursor level after object read'] =
841841
})
842842

843843
// Assert it's the same
844-
test.equal(ReadPreference.SECONDARY, cursor.read.mode);
844+
test.equal(ReadPreference.SECONDARY, cursor.readPreference.mode);
845845
}
846846
});
847847
});

0 commit comments

Comments
 (0)