У меня есть подозрение: мы также загружаем в Discourse письма из рассылки. Если старое сообщение, ожидающее модерации, будет выпущено модератором рассылки, фильтр Discourse может посчитать его слишком старым. Из-за break цикл будет прерван. Таким образом, одно старое сообщение может остановить всю дальнейшую обработку.
Кстати, из-за порядка работы этого POP-сервера электронной почты сообщения обрабатываются от старых к новым.
Как насчет этого патча, @gerhard? Также по возможности используйте Discourse.handle_job_exception для корректной отчетности об остальных ошибках.
- break if mail_too_old?(mail_string)
+ next if mail_too_old?(mail_string)
Спасибо за объяснение. Это имеет смысл.
@riking Я согласен, правильное исправление должно использовать handle_job_exception. Не стесняйтесь создать PR. ![]()
Это должно исправить проблему.