因“关注用户”插件导致用户帖子重复通知

大家好,

有个小疑问:自从我从备份恢复了站点后,每当某个特定用户回复某个话题时,就会持续向创建该话题的用户或被回复的用户发送“编辑”通知。

我尝试调查后发现,Sidekiq 的“重试”部分似乎有些异常,某些任务一直堆积在那里,似乎从未成功执行。删除这些任务后,通知就停止了(直到该用户在另一个话题上发帖,又会生成新的任务)。

这些消息的格式如下:

下次重试时间 重试次数 队列 任务 参数 错误
1 分钟后 10 default Jobs::PostAlert {“post_id”=>25977142, “new_record”=>true, “options”=>nil, “current_site_id”=>“default”} Jobs::HandledExceptionWrapper: Wrapped ActiveRecord::RecordNotFound: Couldn’t find User with ‘id’=1452

根据我的推断,似乎某个用户不存在(尽管问题出现在一个确实存在且活跃的用户发布的帖子中)。所以可能是另一个用户。是否有某个查询或方法可以让我进一步确认这一点?

我查阅了一些文档,但如果需要“修复”某些内容,我担心会搞砸什么 :sweat_smile:

非常感谢您的帮助!

2 个赞

小型更新:

  • 仅发生在该特定用户身上。
  • 在用户收到的通知中,显示为该用户发布的每条消息都在被“编辑”(即:如果该用户在回复另一位用户,那么被回复的用户会持续收到关于该帖子的“编辑通知”)。
  • 重建(Rebuild)操作无法解决此问题。
  • 在 Sidekiq 中删除重试任务似乎能永久停止该特定通知的报错,但每当该用户发帖时,问题又会重现。

快速补充:

  • 尝试查询该用户,结果显示不存在,但我不明白这如何与现有用户关联(可能是查询语句有误?)。在管理页面,查看此帖子 中的查询语句和管理 URL,我确实有用户 ID 为
1 个赞

您碰巧在使用 Follow User 插件吗?我曾遇到过类似的问题:已删除的用户不会从关注列表中移除,且通知会陷入循环。我的解决方案是手动从数据库中删除一些记录。该插件中的问题已修复,但如果您使用的是旧版本,仍可能会遇到此问题。

3 个赞

天哪,Discourse!是的,我在用!:stuck_out_tongue:

我去检查一下版本,看看是否与此有关。非常感谢 @bartv

3 个赞

太好了!请注意,即使插件已更新,您的数据可能仍被旧版本损坏。我翻出了我之前关于此问题的帖子。虽然不够详细,但或许能为您指明方向:

https://meta.discourse.org/t/follow-plugin/110579/41?u=bartv

4 个赞