2015-03-12 4 views
3

У меня есть приложение для мангуста, которое периодически запускает запланированную задачу. К сожалению, после первого запуска этой задачи вся задача висит перед закрытием и больше не запускается.Mongoose висит на отключении

Еще более удивительно, после того, как он прокомментировал это почти до нуля, он все еще висит. На данный момент наша программа выглядит следующим образом:

var mongoose = require('mongoose'); 

var config = require('../lib/config'); 
var log = require('../lib/custom-log'); 

var db = mongoose.connection; 

db.on('error', function(err) { 
    console.log("Mongoose connection error: " + err); 
    mongoose.disconnect(); 
}); 

db.once('open', function() { 
    console.log("db is open"); 
    mongoose.disconnect(); 
}); 

db.once('close', function() { 
    console.log("db is closed"); 

}); 

mongoose.connect(config.database.uri); 

Результаты в:

дб открыт

дб закрыт

Затем вешает.

Мы запускаем Node 0.10.36 на Ubuntu 14.10, и мы подключаемся к репликации с тремя узлами через URI MongoDB.

ответ

1

Поскольку я был вовлечен в решение этой проблемы, я отвечу на то, что вызвало это, и сообщит отчет об ошибке с помощью Mongoose.

Проблема была вызвана тем, что 2 из 3 узлов неожиданно вышли из набора реплик, но они все еще находились в URI MongoDB. Итак, все работает нормально, никаких ошибок не было, но Mongoose (или, может быть, драйвер MongoDB) висели на отключении, из-за этих двух узлов вместо того, чтобы поднимать исключение и давать подсказки разработчикам о том, что сломалось.

Смежные вопросы