Sidekiq error for Jobs::DeleteReplies Job

Hello,
I’m getting lot of failed jobs for the Jobs::DeleteReplies job. I don’t think this can have anything to do with my plugins. Maybe some incompatibility between upgrades?

Jobs::HandledExceptionWrapper: Wrapped NoMethodError: undefined method minutes’ for nil:NilClass`

Multiple identical jobs are accumulating in “retries” tab of Sidekiq…

Thanks for any advice…

UPDATE: I’ve found associated topic_id and deleted this particular topic timer, hopefully it helps…
I’m leaving this here maybe it can be result of a bug…

It’s a bug from a change we made very recently, should be fixed by next week.

5 Likes

Thanks for confirmation. Should I expect more problems with other topic_timers? Which type of the timer is affected? Only “delete post after x”? It really accumulated a lot in the queue (thousands in few hours)… (luckily I have prometheus… :slight_smile: )

The fix is here:

https://github.com/discourse/discourse/commit/18da1d5b07445e1de3a1326aabcca68091093dd7

This migration did not work as expected:

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 does not work if duration_minutes is NULL, which all of them arewere.

Yes only the Jobs::DeleteReplies job directly referred to the new duration_minutes job, so other timers should have been unaffected (from what I can tell).

3 Likes