当有人引用你的内容回复你时,你会收到两条通知:一条针对回复,另一条针对引用。这是预期的行为吗?我觉得这有点多余。
是的,这并非预期行为,甚至可以说是个 bug……
能否确认你在这里收到了两条通知?
我这里没有收到,也许是因为你回复的是主题而不是另一条帖子。五天前你回复另一条消息时,我也遇到过这个问题:
今天早些时候,来自其他人的回复也出现了同样的情况:
你从这条回复中收到了两条通知吗?我觉得每次都会发生(同样,除了回复主题的情况)。
这是直接回复,并非回复主题。
我完全相信这确实发生了,只是想要一个精确的复现步骤。
我只收到了回复通知……这很奇怪。所以我猜这并不是每次都发生,尽管我确实经常看到这种情况。
我看不到你这里的回复与之前导致问题的回复之间有任何区别。它们都是对上一篇文章(非主题帖)的回复,并且引用了同一篇文章。如果你能发现区别,以下是我之前提到的两个链接:
Install Discourse on Windows for development - #49
`min ratio to crop` site setting should respect w/h ratio as defined in markdown - #8 by md-misko
我能想到的唯一其他可能是,引用通知有时会延迟,通常是在回复通知之后才收到。如果这些通知来自后台任务,也许存在某种竞态条件。
是的,这对我来说非常像是一个竞态条件。
难道不是先回复,然后再编辑加上引用吗?
这种情况确实会发生,但我怀疑并不仅限于这些情况。这种情况出现得足够频繁,以至于不太可能有那么多人是在编辑时添加引语的。也许 @sam 可以确认一下,他发布我引用的那篇帖子时是否是一次性完成的,还是事后添加了引语进行编辑。毕竟那已经是 6 天前的事了,他应该还记得。
我也刚收到这个,关于这个 回复/引用,截图:
在这种情况下,我首先进行了回复,然后保存,紧接着又编辑以添加引用,从而提供更好的上下文。这就能解释为什么会有两条通知——一条是回复的通知,另一条是编辑时添加引用的通知。
啊,谢谢,那这就解释得通了。
我仍然想知道是否存在某种竞态条件,使得在原回复中(而非编辑时)添加的引用被当作编辑时添加的引用处理。仅仅是从时间顺序来看的话。
我对此引用/回复只收到了一条通知。这并不能完全排除竞态条件的可能性,但这更符合 Falco 提到的场景,即先回复,然后迅速编辑以添加引用。
所以我们需要提醒用户不要这样做 ![]()
这确实看起来像是事后补上的。你快速写了一篇帖子并提交,但随后意识到上下文可能并不完全清楚,于是回去添加引用。
既然提到了“编辑时添加引用”这一点,我开始更加留意,发现自己多次被引用却没有收到引用通知。因此,这似乎确实与此相关。不幸的是,我无法自行验证任何情况,因为我不可能每次收到引用通知时都去问对方是否在编辑时添加了引用。
如果这真的只发生在编辑时(而绝非竞态条件所致),那它实际上算是一个不错的“功能”,因为它能让你知道即使你已经读过该帖子,仍有新内容被添加。
最近这种情况发生得太频繁了……我刚刚从 @downey 那里收到了三重通知。
@kris.kotlarek 你能调查一下吗?至少确认一下在非竞态条件的情况下这是否不可能发生(直接回复,然后编辑添加引用)。
一般来说,如果已经是直接回复,我们就不应该通知某事有“提及”。
防止时序问题将会很棘手,我们需要在用户/帖子对上实现分布式互斥锁,但在添加之前我们先稍等一下。
这是我提出的潜在解决方案。其核心思路是:如果用户已经拥有未读的“新回复”通知,则不再创建新的通知。
但如果“新回复”通知已被阅读,我们仍希望针对帖子被编辑(例如添加了引用)的情况生成通知,因为这些额外信息对接收者可能具有价值。
我不太确定……我觉得这有点把问题想复杂了。
如果我直接回复
,然后明天在你阅读后回到这个帖子并添加“赌场”这个词,你将不会收到通知。
我编辑了帖子,这是对您的直接回复。
为什么我添加一个引用您实际帖子的编辑会具有额外的权重?这比我完全删除这个帖子并用斑马图片替换它更重要吗?![]()
![]()
我认为我们应该简化这里……每个帖子类型(提及/直接回复)只发送一次通知……永远如此。
我怀疑这个问题的一部分是由这个 @pmusaraj 引入的?Do not collapse quote notifications · discourse/discourse@27387b0 · GitHub
我理解你的意思,我们简化一下。
我以为直接回复被编辑时会有通知,如果没有,我们就遵循这个模式。
这其实是一个很小的风险。比如,你发了一条帖子:
“嘿,Kris,你能完成那个功能吗?”
我回复:
“没问题,别担心。”
然后,下周你把原消息改成:“嘿,Kris,你能借我一百万美元吗?”
那样的话,我就永远不知道你是在让我帮忙了 ![]()
不过,这听起来确实是一个非常极端的例子 ![]()
我认为这种情况目前尚未被处理。我们现在的奇怪处理逻辑如下:
目前为止,你还没有收到任何重复通知,只收到了初始回复的通知。我们遇到的奇怪边界情况是,在完成上述所有操作后,你添加了一个引用:
……然后你就收到了重复通知。
这个新通知完全不合理,因为你已经答应给我 100 万美元了,而我们根本没跟你提过那回事。
![]()



