自动删除帖子的主题回复数量

刚注意到,当有未读回复时,Postgres 12 公告帖子的未读回复数显示为 303(蓝色圆圈中显示 303)。打开该帖子后,看到最新回复,计数变为 1。该帖子设置为自动删除超过 5 天的回复,目前该帖子只有一条回复。看起来自动清理主题中带有未读帖子的回复计数计算不正确?这是在移动设备上发现的,我在打开帖子并标记为已读之前,没想到要在桌面端检查一下。

2 个赞

是的,这是一个自 Discourse V1 版本以来就存在的已知问题。大量删除操作后紧跟一条回复,总是会导致这种不匹配,直到用户下次访问该主题。无论是自动删除还是手动删除,结果都一样。

2 个赞

我猜自动删除和那个特定主题的结合,只会让问题显得更加明显。

修复起来有多麻烦?

1 个赞

对我来说,这算是一个有点奇怪的功能……至少你访问时能知道有一堆东西被删除了。

1 个赞

为了把这个问题彻底说清楚,这里的修复方案极其复杂且令人头疼。后端实际上并不会专门统计你有多少未读帖子,而是依赖于 highest_post_number 与你上次在主题中访问的 post_number 之间的差值。

如果非要给个具体的评估,假设我的唯一任务就是修复这个 bug,那也需要花费数个月的时间,并且我还需要发明一种自定义的数据存储方案来实现。对每个未读主题执行 count(*) 查询是完全不可行的。

3 个赞