編集競合: 他のユーザーによって投稿が編集されたため、変更を保存できません

投稿を作成した直後にその投稿を編集しようとすると、次のエラーが表示されます。

その投稿は他のユーザーによって編集されたため、変更を保存できなくなりました

例:

また、「編集を保存」ボタンが「上書き編集」に名前を変更します。

これは金曜日に「2.8.0.beta2」( 4681c670c0 ) にアップデートしてから発生するようになりました。

参考までに、私は毎週アップデートを行っており、この問題は 2021 年 6 月 4 日(金)から 2021 年 6 月 11 日(金)の間に新たに発生したものです。

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 と入力し、SPACE キーを押します。

その後、すぐに投稿を編集して末尾に数文字追加してみてください。

内部ロジックのどこかが末尾および先頭のスペースを「除去」してしまい、投稿の変更を検出するアルゴリズムを混乱させているようです。

「いいね!」 10

私はこれを何度もテストしてきましたが、スペースを追加することを考えたことはありませんでした。コンテンツよりもタイミングに集中していたからです。

上記の PR により、サーバーが raw を返すようになり、それを使用して投稿レコードを更新できるようになります。

「いいね!」 14

これを見つけたなんて、本当に感心します!今のところ修正は順調のようです。皆さん、改めてありがとう。

「いいね!」 1

申し訳ありませんが、修正されませんでした。@sam が指摘した正確なシーケンスが依然としてバグをトリガーします。2.8.0.beta2 (0c42a29dc4) を実行中です。

実際、meta.discourse でこの投稿を編集した直後にエラーが発生しました。

これについて何か特別なことをしましたか?投稿してすぐに編集を試みましたか、それとも少し時間を置いて(ページをリフレッシュしてから)編集を試みましたか?

投稿の前に空白が含まれていましたか?

「いいね!」 1

自分のサイトでのテストでは、Sam の指示に従いました。こちらでは、あなたのタグを編集しようとしたところ、エラーが発生しました。

ええと、try.discourse.org で簡単に再現できますね。投稿して編集し、文字を追加すると、

その投稿は他のユーザーによって編集されたため、変更は保存できなくなりました。

というエラーが表示されます。

このコードパスがこれほど簡単に壊れて、修正にもこれほど苦労していることに少し心配です😢

「いいね!」 6