Sidekiq 错误:Jobs::DeleteReplies Job

你好,

我遇到了大量 Jobs::DeleteReplies 任务失败的情况。我认为这与我的插件无关,可能是升级之间的兼容性问题?

Jobs::HandledExceptionWrapper: 封装的 NoMethodError: 对 nil:NilClass 调用了未定义的方法 'minutes'

多个相同的任务正在 Sidekiq 的“重试”选项卡中累积……

image

感谢任何建议……

更新:我找到了关联的 topic_id 并删除了该特定主题计时器,希望能有所帮助……
我保留这条信息,也许这可能是某个 bug 的结果。

这是一个我们非常最近更改引入的 bug,预计下周内修复。

感谢您的确认。我是否应该预期其他 topic_timers 也会出现更多问题?受影响的定时器类型是哪一种?是否仅限于“x 时间后删除帖子”?队列中确实积压了大量任务(几小时内就达到了数千个)……(幸好我有 Prometheus…… :))

修复已在此处:

以下迁移未按预期工作:

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")

如果 duration_minutes 为 NULL,则 WHERE duration_minutes != duration 无法生效,而所有记录都是当时确实都是 NULL。

是的,只有 Jobs::DeleteReplies 任务直接引用了新的 duration_minutes 字段,因此其他定时器应未受影响(据我所知)。