- Shipped
- 2026年9月27日 6:14 UTC
- Author
- Kamo
- Commit
- 279a389
チャットは、メンバーの通知を一度に2つの方法で失敗しました:会話を開くことが示されました 再試行が押されたまで「メッセージをロードしない」と、送信されたメッセージが届かないことがあります。 両方とも、YugabyteDB SQLState 40001 で 500 に応答する MediaService でした。 毎週500枚のWeb BFFが1週間に1行を記録しました。 Yugabyte は、トランザクションの FIRST ステートメントである場合にのみ、読み取りを解放します。 ザ・オブ・ザ・ 履歴の読み込みは、呼び出し主のメンバーシップ行を読み、その3番目のステートメントへのアクセスをチェックします。 会話のマークを同じ瞬間に読み込む行。 送信はメッセージを書き、 その後、同じトランザクションでrosterとorgのドメインを読みます。 行を読んだりする リクエスト全体に失敗した瞬間を書いてください。書き込みが解決された瞬間、 Retryが常に働いた理由。 - チャットウィンドウのリクエスト(送信、履歴、マーク読み取り、チャットリスト、編集、顔、メンバー) 領収書)は@RetryOnDbConflictを運び、そのキャッチオールは衝突を許します **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** スワロー 再試行に見えない500に。 安全: 送信アナウンスがすべて送信完了です。 - すでにポインタがすでにそこにいるとき、Mark-readはもはやメンバーシップの行を書き換えません (ChatReadPointerRepository、ガードされたアップデート) 数回開いて、 すべてのリライトは、メンバー自身の履歴がロードされるか、失敗するチャンスでした。 読み取りレシート とはいえ、 - 送信はクライアントを運ぶことができますMessageId (ChatSendLedger、Redis): 既に送信のリトライ コミットは、送信の応答に応答し、まだ409で飛行中 SEND IN PROGRESS なので、クライアントは2回メッセージを投稿せずに再試すことができます。 失敗は開きます。 ラチェット ************************ は @Transactional チャットハンドラを全て @Transactional に保持します 再試行と衝突を許すキャッチへの再試行。 MediaControllerDbConflictTest 再生 実質のプロキシによる生産の失敗: 衝突した試みは戻ります、秒 トランザクションは一度コミットし、失敗した試みのために何も発表されません。 1384テストパス.
