Повестка дня не запускается после перезапуска сервера - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть повестка дня, которая отлично работает, когда я ее впервые определяю.Я вижу соответствующий документ в MongoDB и все хорошо.Но когда сервер перезагружается или я нажимаю «Ctrl + C» и завершаю процесс, чтобы после повторного запуска моего приложения задание не запускалось впоследствии.

Было также много дискуссий по этому вопросу на git .

Я попытался:

1- Изящная обработка SIGTERM

2- Запустите запрос на обновление MongoDB и установите для lockedAt, lastModifiedBy, lastRunAt значение null при каждом запуске приложения..

Ни один из них не работал для меня.В MongoDB я вижу, что задание не находится в заблокированном состоянии, поэтому я запутался, почему он не запускается, если приложение перезапускается?

1 Ответ

0 голосов
/ 29 сентября 2018

Ну, если вы перепробовали все, что могли, просто обновите все задания, которые не удалось запустить, примерно так:

  agendaJobs.update({
    lockedAt: {
      $exists: true
    },
    lastFinishedAt: {
      $exists: false
    }
  }, {
    $unset: {
      lockedAt: undefined,
      lastModifiedBy: undefined,
      lastRunAt: undefined
    },
    $set: {
      nextRunAt: new Date()
    }
  }, {
    multi: true
  })

Это один из способов решить проблему и, по сути, настроить все заблокированные задания для повторного планирования.

Это, кстати, один из предложенных подходов на git.

Это происходит от здесь , если вы хотите весь контекст.

...