клиент mongodb узла перестает получать ответ, обратный вызов не вызывается при запуске многих запросов - PullRequest
0 голосов
/ 13 сентября 2018

Вот довольно урезанная версия кода, работающего на рабочем сервере. Уведомление о процессе получает от 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

Дайте мне знать, если вам нужны какие-либо другие данные.

...