编辑帖子时出现随机 404 错误

我在编辑论坛回复时随机收到 404 错误。

当编辑成功时,会向端点 /posts/:post_id 发送 PUT 请求,并返回 200 响应。

但当编辑失败时,我在开发者工具中看到向 /post_replies/:post_id 发送的 PUT 请求返回了 404。刷新页面后,错误消失,我就能正确保存编辑了(通过 /posts/:post_id:post_id 保持不变)。

我不确定是否存在某种特殊情况导致 /posts 被错误地变成了 /post_replies,还是说这是其他问题。最近我将服务器的内存增加了四倍,但在日志中并未发现任何异常。

感谢任何帮助。

2 个赞

我在尝试编辑他人的帖子时,持续遇到这些随机错误。这种情况既发生在旧帖子上,也发生在新帖子上,但总是随机出现:

刷新页面后再保存编辑,问题就会消失:

我使用的是最新版本,可以确认该问题依然存在:尝试编辑其他用户的帖子时,会随机弹出一个显示 not_found 消息的对话框:

请求的 URL 或资源未找到。

如果我刷新页面并再次点击“保存编辑”按钮,错误就会消失,编辑也能成功保存。

这两个请求分别向不同的 URL 发送了 PUT 请求。

好的,但为什么呢?我在同一篇帖子中点击的是同一个“保存编辑”按钮,唯一的区别只是刷新了页面。

下次出现这种情况时,不妨检查一下浏览器的回溯日志?由于它正在访问不同的端点,在 EmberJS 应用中可能会通过不同的方法进行处理。

1 个赞

@Falco 又发生了同样的问题。我在遇到错误后打开控制台,只看到这些内容:

image

如果我在控制台打开的情况下再次尝试保存:

然后刷新页面,它允许我编辑:

image

这是发起者的路径(VM73:1 脚本):

1 个赞

我刚更新到 2.7.0.beta2,问题依然存在:

  • 尝试编辑帖子回复 47994
  • PUT https://mydomain.com/post_replies/47994 => 404 请求的 URL 或资源未找到。在控制台中显示:资源加载失败,服务器返回状态码 404 () /post_replies/47994:1
  • 刷新页面
  • 再次尝试编辑帖子回复 47994
  • PUT https://mydomain.com/posts/47994 => 200 成功

如果还有其他有助于调试的信息,我很乐意提供。

今天不到一个小时就发生了 3 次 :sweat_smile:

还有什么我可以做的来协助排查这个 bug 吗?

@Falco 我终于弄明白了如何稳定地复现这个 bug:

  1. 禁用“启用过滤后的回复视图”
  2. 点击回复上的箭头:
  3. 点击箭头跳转到原始消息:image
  4. 点击编辑图标:
  5. 进行修改并点击“保存更改”。此时会弹出一个对话框,提示 URL 或资源未找到(404)。
4 个赞

感谢 @Nacho_Caballero,具体的步骤非常有帮助。我已经提交了一个包含修复方案的 PR:FIX: 404 error when editing an expanded reply by pmusaraj · Pull Request #12504 · discourse/discourse · GitHub

7 个赞

没问题!这么简单就能解决 :sweat_smile:

3 个赞

像往常一样,感谢您对我们的耐心,Nacho——当您提供非常详细的复现步骤时,我们几乎总能迅速修复问题!

4 个赞