Конфликт редактирования: этот пост был изменен другим пользователем, и ваши изменения больше нельзя сохранить

Если я пытаюсь отредактировать только что созданное сообщение, получаю следующую ошибку:

Это сообщение было отредактировано другим пользователем, и ваши изменения больше нельзя сохранить

Например:

Кнопка «Сохранить редактирование» также меняет своё название на «Перезаписать редактирование».

Это началось только после обновления в пятницу до версии «2.8.0.beta2» ( 4681c670c0 ).

Если это поможет, я обновляюсь еженедельно, поэтому это новая проблема, возникшая между пятницей, 4 июня 2021 года, и пятницей, 11 июня 2021 года.

Это происходит и здесь, на meta (как видно на моём скриншоте).

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

Несколько наших пользователей также сообщили об этом.

9 лайков

5 лайков

Звучит как точно такая же проблема :+1:

1 лайк

Снова произошло прямо здесь!

2 лайка

Несколько человек из нашей команды также это заметили. Мы в курсе и занимаемся решением проблемы.

9 лайков

Да, я сегодня только что получил один из них, @nbianca собирается его посмотреть.

3 лайка

Тема Error message when editing posts является дубликатом этой.

1 лайк

Хорошо, это полностью исправлено в FIX: Update raw and cooked immediate after edit by nbianca · Pull Request #13387 · discourse/discourse · GitHub, @nbianca?

9 лайков

Да, все известные проблемы исправлены.

8 лайков

Отлично, спасибо!

5 лайков

Это уже слито, должно появиться здесь через 20–30 минут.

10 лайков

К сожалению, это ещё не исправлено. Мои пользователи продолжают получать сообщение о перезаписи правок, и я только что столкнулся с этим сам. Работаю на версии 2.8.0.beta2 ( 0f9d31a85e ).

Кстати, при попытке загрузить первый скриншот на meta.discourse я получил ошибку

PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "uploads_pkey"

Повторная попытка сработала.

1 лайк

Я тоже всё ещё могу воспроизвести это здесь, на Meta.

5 лайков

@nbianca это было очень сложно изолировать, но у меня есть 100% воспроизводимый пример.

Создайте пост с текстом:

hello world 123 hello world

Убедитесь, что после последнего слова world есть пробел в конце.

Введите world ПРОБЕЛ

Затем быстро попробуйте отредактировать свой пост, добавив несколько букв в конец.

Что-то в нашей внутренней логике «удаляет» пробелы в начале и в конце строки, после чего алгоритм, определяющий изменения в посте, дает сбой.

10 лайков

Я тестировал это очень долго, но никогда не думал о добавлении пробелов. Я был сосредоточен на тайминге, а не на содержании.

Указанный выше PR позволит серверу возвращать исходный текст и использовать его для обновления записи поста.

14 лайков

Я впечатлён, что вы его нашли, учитывая, что это было! Пока исправление выглядит хорошо, ещё раз спасибо всем.

1 лайк

Извините, не исправлено @nbianca. Точная последовательность, которую указал @sam, по-прежнему вызывает ошибку. Работает версия 2.8.0.beta2 ( 0c42a29dc4 ).

И, кстати, я только что получил ошибку при редактировании этого самого поста на meta.discourse.

Вы что-то особенное сделали с этим? Вы опубликовали пост и сразу попытались его отредактировать или подождали какое-то время (обновили страницу), а затем попытались отредактировать?

Были ли в вашем посте какие-либо пробелы, как раньше?

1 лайк

Для тестирования на своём сайте я следовал инструкциям Сэма. А здесь я попытался отредактировать ваш тег и получил ошибку.

Хм, у меня есть простой сценарий воспроизведения на try.discourse.org.. создаю пост, затем редактирую его и добавляю символы, и получаю:

Этот пост был отредактирован другим пользователем, и ваши изменения больше не могут быть сохранены.

Я немного беспокоюсь об этом участке кода, если мы так легко его ломаем и с таким трудом пытаемся исправить :cry:

6 лайков