Письма зависли в статусе Ready / Готово к обработке

:speech_balloon: Description

По умолчанию, все письма в статусе Ready автоматически направляются в очередь для обработки. Из-за инфраструктурного сбоя возможна потеря части заданий на обработку писем в очереди. Для повторной отправки писем на обработку используйте одно из обходных решений, описанных ниже.

:heavy_check_mark: Workaround

Необходимая роль: admin

Если писем не более 1000 - используйте серверный скрипт, запущенный вручную через форму Server Script:

  1. Перейдите по ссылке /record/sys_script
  2. Заполните поле скрипт значением:
let startDatetime = new SimpleDateTime();
startDatetime.addSeconds(-120); // перезапустить письма зависшие более чем на 2 минуты
const readyEmail = new SimpleRecord('sys_email');
readyEmail.addQuery('status', 'ready');
readyEmail.addQuery('sys_created_at', '>', startDatetime.getValue());
readyEmail.query();
ss.info(readyEmail.getRowCount());
readyEmail.setMultipleValue('status', 'not_ready');
// readyEmail.updateMultiple();
const notReadyEmail = new SimpleRecord('sys_email');
notReadyEmail.addQuery('status', 'not_ready');
notReadyEmail.query();
notReadyEmail.setMultipleValue('status', 'ready');
// notReadyEmail.updateMultiple();
  1. Запустите скрипт по кнопке Run.
  2. Раскомментируйте обе строки с вызовом метода updateMultiple().
  3. Сохраните форму.
  4. Запустите скрипт по кнопке Run.

Если писем более 1000 - используйте скрипт по расписанию скрипт Scheduled Script.

  1. Создайте запись Scheduled Script со значениями:
    2.Name*: Reprocess ready emails
    3.Run as*: Admin User
    4.Active*: No
    5.Run frequency*: Periodically
    6.Run period*: 2 минуты
    7.Run date and time*: 2021-12-31 00:00:00
  2. Заполните поле скрипт значением:
let startDatetime = new SimpleDateTime();
startDatetime.addSeconds(-120); // перезапустить письма зависшие более чем на 2 минуты
const readyEmail = new SimpleRecord('sys_email');
readyEmail.addQuery('status', 'ready');
readyEmail.addQuery('sys_created_at', '>', startDatetime.getValue());
readyEmail.setLimit(500);
readyEmail.query();
ss.info(readyEmail.getRowCount());
readyEmail.setMultipleValue('status', 'not_ready');
readyEmail.updateMultiple();
const notReadyEmail = new SimpleRecord('sys_email');
notReadyEmail.addQuery('status', 'not_ready');
notReadyEmail.query();
notReadyEmail.setMultipleValue('status', 'ready');
notReadyEmail.updateMultiple();
  1. Сохраните форму.
  2. Измените значение в поле Active на Yes и сохраните форму.
  3. Деактивируйте скрипт Scheduled Script, когда в списке по ссылке будет 0 записей:
    /list/sys_email?condition=(sys_created_at<javascript%3A%20%7B%20let%20last2mins%20%3D%20new%20SimpleDateTime()%3B%20last2mins.addSeconds(-120)%3B%20return%20last2mins.getValue()%7D%5Estatus%3Dready)%5EORDERBYDESCsys_created_at
1 лайк