Skip to content

Commit 0fd78b3

Browse files
committed
No removal of close event handlers on server reconnect, emits reconnect event when reconnection happens. Reconnect Only applies for single server connections as of now as semantics for ReplSet and Mongos is not clear (Issue #1056)
1 parent 169cec0 commit 0fd78b3

File tree

3 files changed

+14
-21
lines changed

3 files changed

+14
-21
lines changed

HISTORY

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
1.3.19 2013-08-21
22
-----------------
33
- Correctly rethrowing errors after change from event emission to callbacks, compatibility with 0.10.X domains without breaking 0.8.X support.
4+
- Small fix to return the entire findAndModify result as the third parameter (Issue #1068)
5+
- No removal of "close" event handlers on server reconnect, emits "reconnect" event when reconnection happens. Reconnect Only applies for single server connections as of now as semantics for ReplSet and Mongos is not clear (Issue #1056)
46

57
1.3.18 2013-08-10
68
-----------------

lib/mongodb/connection/base.js

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -195,26 +195,13 @@ DbStore.prototype.fetch = function(databaseName) {
195195
DbStore.prototype.emit = function(event, message, object, reset, filterDb, rethrow_if_no_listeners) {
196196
var emitted = false;
197197

198-
if(reset) {
199-
while(this._dbs.length > 0) {
200-
var db = this._dbs.shift();
201-
// Only emit if there is a listener
202-
if(db.listeners(event).length > 0) {
203-
if(filterDb == null || filterDb.databaseName !== db.databaseName
204-
|| filterDb.tag !== db.tag) {
205-
db.emit(event, message, object == null ? db : object);
206-
emitted = true;
207-
}
208-
}
209-
}
210-
} else {
211-
for(var i = 0; i < this._dbs.length; i++) {
212-
if(this._dbs[i].listeners(event).length > 0) {
213-
if(filterDb == null || filterDb.databaseName !== this._dbs[i].databaseName
214-
|| filterDb.tag !== this._dbs[i].tag) {
215-
this._dbs[i].emit(event, message, object == null ? this._dbs[i] : object);
216-
emitted = true;
217-
}
198+
// Emit the events
199+
for(var i = 0; i < this._dbs.length; i++) {
200+
if(this._dbs[i].listeners(event).length > 0) {
201+
if(filterDb == null || filterDb.databaseName !== this._dbs[i].databaseName
202+
|| filterDb.tag !== this._dbs[i].tag) {
203+
this._dbs[i].emit(event, message, object == null ? this._dbs[i] : object);
204+
emitted = true;
218205
}
219206
}
220207
}

lib/mongodb/connection/server.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,8 +368,12 @@ Server.prototype.connect = function(dbInstance, options, callback) {
368368
// Save document returned so we can query it
369369
_server.isMasterDoc = reply.documents[0];
370370

371-
if(self.emitOpen)
371+
if(self.emitOpen) {
372372
_server._emitAcrossAllDbInstances(_server, eventReceiver, "open", null, returnIsMasterResults ? reply : null, null);
373+
self.emitOpen = false;
374+
} else {
375+
_server._emitAcrossAllDbInstances(_server, eventReceiver, "reconnect", null, returnIsMasterResults ? reply : null, null);
376+
}
373377

374378
// If we have it set to returnIsMasterResults
375379
if(returnIsMasterResults) {

0 commit comments

Comments
 (0)