Случайные ошибки 404 при редактировании постов

При редактировании ответов на моём форуме возникают случайные ошибки 404.

Когда редактирование проходит успешно, отправляется PUT-запрос к эндпоинту /posts/:post_id с ответом 200.

Однако при неудаче в инструментах разработчика видно, что отправляется PUT-запрос к /post_replies/:post_id, который возвращает 404. После обновления страницы ошибки исчезают, и я могу сохранить изменения корректно (через /posts/:post_id, при этом :post_id не меняется).

Не уверен, существует ли какое-то особое условие, из-за которого /posts ошибочно превращается в /post_replies, или проблема в чём-то другом. Недавно я увеличил оперативную память сервера в четыре раза, но в логах ничего подозрительного не заметил.

Буду признателен за любую помощь.

2 лайка

Я продолжаю получать эти случайные ошибки при попытке сохранить правку в чужих сообщениях. Это происходит как со старыми, так и с новыми сообщениями, но всегда случайно:

И ошибка исчезает, если обновить страницу и снова сохранить правку:

Я использую последнюю версию и могу подтвердить, что проблема всё ещё актуальна: при попытке сохранить правку в чужом сообщении случайно появляется диалоговое окно с сообщением not_found:

Запрашиваемый URL или ресурс не найден.

Если перезагрузить страницу и снова нажать кнопку «Сохранить правку», ошибка исчезает, и правка сохраняется.

Эти два запроса выполняют PUT на разные URL.

Понятно. Но почему? Я нажимаю ту же кнопку «Сохранить изменения» в том же посте. Единственное отличие — обновление страницы.

Может быть, в следующий раз попробуйте проверить трассировку браузера, когда это произойдёт? Поскольку запросы идут к разным конечным точкам, возможно, в приложении EmberJS используются разные методы.

1 лайк

@Falco Это только что произошло снова. Вот что я вижу, когда открываю консоль после получения ошибки:

image

А если попытаться сохранить ещё раз с открытой консолью:

Затем я обновляю страницу, и система позволяет мне редактировать:

image

Вот путь инициатора (VM73:1 Script):

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:

Могу ли я ещё чем-то помочь в поиске этой ошибки?

@Falco Я наконец понял, как стабильно воспроизвести эту ошибку:

  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 лайка