mongoose: Don't reconnect after disconnection
After upgrading from 4.4.11 to >=4.6.1 we get random disconnections and mongoose never reconnects.
mongoose version: 4.6.5 mongodb version: 3.2.9
This is the way I create the connections:
var uri = 'mongodb://USENAME:PASSWORD@host1:port1,host2:port2/database?authSource=admin';
var options = {};
options.server = {
auto_reconnect: true,
poolSize: 5,
socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 },
reconnectTries: 3000
};
options.replset = {
auto_reconnect: true,
poolSize: 5,
socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 },
reconnectTries: 3000
};
var db = mongoose.createConnection(uri, options);
mongoose.connection.on('error', function(err) {
console.log('MONGODB ERROR MONGOOSE LEVEL ' + server, err);
});
db.on('connecting', function() {
console.info('MONGODB ' + server + ' connecting.');
});
db.on('error', function(err) {
console.log('MONGODB ERROR ' + server, err);
});
db.on('close', function(err) {
console.log('MONGODB CLOSE ' + server, err);
});
db.on('connected', function() {
console.info('MONGODB ' + server + ' connected successfully.');
});
db.once('open', function callback() {
console.info('MONGODB ' + server + ' opened successfully.');
});
db.on('reconnected', function() {
console.info('MONGODB ' + server + ' reconnected.');
});
db.on('timeout', function() {
console.info('MONGODB ' + server + ' timeout.');
});
db.on('disconnected', function() {
console.info('MONGODB ' + server + ' disconnected');
});
This is the sequence of events I get:
pid:3429 MONGODB geo_uri connected successfully.
pid:3429 MONGODB geo_uri opened successfully.
pid:3429 MONGODB dashboards_db connected successfully.
pid:3429 MONGODB dashboards_db opened successfully.
pid:3429 MONGODB tweet_analytics_db connected successfully.
pid:3429 MONGODB tweet_analytics_db opened successfully.
pid:3429 MONGODB fullcontact_enrichment_db disconnected
pid:3429 MONGODB ERROR fullcontact_enrichment_db { [MongoError: no valid replicaset members found]
name: 'MongoError',
message: 'no valid replicaset members found' }
pid:3429 MONGODB uri connected successfully.
pid:3429 MONGODB uri opened successfully.
pid:3429 MONGODB sync_reports_db connected successfully.
pid:3429 MONGODB sync_reports_db opened successfully.
pid:3429 MONGODB uri disconnected
pid:3429 MONGODB CLOSE uri
Then none of the disconnected databases reconnect. Due to the random nature of the problem, I won’t be able to provide a code to reproduce it. I suspect about something saturated at node.js level or so. Independently of the cause of the disconnection, is there anything I can do to try to reconnect myself?
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Reactions: 2
- Comments: 47 (19 by maintainers)
@Koslun the fork should be unnecessary now. The fix is pretty much just setting socketTimeout to 0 for the database socketOptions now.
Heres what my socket options look like now.
Anything new regarding this matter?
Any updates for this issue?
@jakesjews Ok, thanks for the swift clarification 😃.
Do you know in which version of mongodb-core we will see a fix to this bug? Or alternatively have an issue, PR or commit we can track?