A correção está aqui:
Essa migração não funcionou como esperado:
DB.exec("UPDATE topic_timers SET duration_minutes = (duration * 60 * 24) WHERE duration_minutes != duration AND status_type = 7 AND duration IS NOT NULL")
DB.exec("UPDATE topic_timers SET duration_minutes = (duration * 60) WHERE duration_minutes != duration AND status_type != 7 AND duration IS NOT NULL")
WHERE duration_minutes != duration não funciona se duration_minutes for NULL, e todos eles sãoeram.
Sim, apenas o job Jobs::DeleteReplies referia-se diretamente ao novo job duration_minutes, então outros temporizadores deveriam ter permanecido inalterados (pelo que posso ver).