Вот довольно урезанная версия кода, работающего на рабочем сервере. Уведомление о процессе получает от 40 до 50 списков уведомлений, через которые оно проходит, как написано в псевдокоде.
function ProcessNotifications(notifications){
notifications.forEach(function(notification){
const ntype = notification.type;
if(ntype == 1){
// do something
db.DeleteNotification(notification.id, function(err, resp){ // DB operation
// do something
});
}
else if(ntype == 2){
db.GetNotificationDetails(notification.id, function(err, details){ // DB operation
if(details){
// do something
// Also some DB operations here too.
db.UpdateNotification(notification.id); // DB operation
}
else{
// do something
db.UpdateNotificationWithSomethingElse(notification.id); // DB operation
}
db.DeleteNotification(notification.id, function(err, resp){ // DB operation
// do something
});
});
}
});
}
setInterval(function(){
db.GetNotifications({
// some query
}, function(err, notifications){
ProcessNotifications(notifications);
});
}, 5000);
Проблема в том, что иногда, когда под нагрузкой, т.е. функция обратного вызова функции GetNotifications не вызывается. Это происходит только с этим конкретным процессом. Некоторые другие процессы, которые выполняют другие действия, работают просто отлично. Я не знаю, если это проблема с драйвером, который я использую. Я исправляю это, останавливая все процессы и перезапуская сервер Монго. Но теперь даже это не работает.
В моем пакете используется драйвер "mongodb": "^2.2.21"
. Json
Дайте мне знать, если вам нужны какие-либо другие данные.