Повестка дня не запускается после перезапуска сервера

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

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

Я пытался:

1- Изящное обращение с SIGTERM

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

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

1 ответ

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

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

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

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

Это идет отсюда, если вы хотите, чтобы весь контекст.

Другие вопросы по тегам