当缺少反应计数时,反应有时不会显示

@JammyDodger 注意到他在移动设备上看不到此帖子的回复:ToS and Privacy buttons disappear from /about when I remove my custom FAQ URL - #3 by Canapin [example1]

Jammy (移动设备) - 没有回复:

Jammy (桌面设备) - 左侧有回复,但右侧没有:

其他所有人 - 您可以看到他已回复,一切正常:

在搜索了我的回复活动后,我找到了一个问题也会影响我的示例:Admins may not realize certain sidebar customization are global - #8 by JammyDodger [example2]

这两个帖子都有一个共同点,就是有回复,但点赞数似乎在 actions_summary 中不可用。

根据您是否回复了帖子本身,id: 2 要么在 actions_summary 中缺失,要么如果您没有回复,您会看到计数缺失。如果我理解正确,如果 can_act 为真或者 count>0,则包含 id: 2

仔细查看帖子 example2(https://meta.discourse.org/posts/1404583.json)的 json,其中有两个人回复了,但缺少此计数:

未回复的用户
can_act true
已回复的用户
没有 id 2

在这种情况下,两个用户都缺少 count: 2。对于已经回复的用户,这导致 id: 2 完全丢失。这似乎解释了为什么回复对于已回复的用户不可见,尽管回复确实存在。

作为比较,这是一个有两个回复的帖子,计数如预期显示 Buttons to order items in emoji list settings is difficult to find on touch devices - #2 by zogstrip json https://meta.discourse.org/posts/1907506.json

未回复的用户
can_act true
已回复的用户
acted true

在此帖子中,计数可用,回复如预期显示。

我不知道 Meta 上有多少帖子受到此问题的影响,或者其他论坛是否也受到影响。我也无法提供数据丢失的原因。我只能报告说,对于某些帖子,回复在手机上不显示,在笔记本电脑上仅部分显示,而原因似乎与数据丢失有关。

5 个赞

已开始调查,这是一个正在进行中的修复

1 个赞

您是否找到了发生这种情况的原因?我只找到了 2023 年和 2024 年初的示例。所以我想知道在计算所有反应为“赞”之前的数据与该更改之后的数据是否有不同。
因此,我尝试了如果我使用不计入“赞”的反应会发生什么,但即使 current_user_reaction 的“can_undo”为 false,“can_act”仍然为 true。

这是因为 discourse_reactions_like_sync_enabled 设置为 false。这是在从2024 年 5 月的迁移中故意为之,以避免干扰现有数据。

当此设置禁用时,ReactionLikeSynchronizer 不会运行。此同步器负责:

  • 为反应创建 PostAction(点赞)记录
  • 更新 posts.like_count 以反映反应

在同步不运行的情况下:

  1. 反应存在于 discourse_reactions_reaction_users
  2. 但没有相应的 PostAction 记录
  3. 并且 posts.like_count 保持为 0

您对时间点的直觉是正确的——2023 年/2024 年初的帖子是在此同步不活动时添加了反应,因此它们的 like_count 从未更新。旧的序列化器逻辑在 count = 0can_act = false(撤销窗口已过期)时会完全省略点赞操作。

修复程序不会纠正底层数据差异——它只是确保即使 PostAction/like_count 数据不同步,用户界面也能正确显示反应。在 discourse_reactions_like_sync_enabled = false 的站点上,独立于 PostAction 记录存在的反应是预期行为。

1 个赞

此主题已在 20 小时后自动关闭。不再允许回复。