ReplicatedWriteConflictException

TL;DR — Anda menulis ke item dalam global table multi-Region strongly consistent (MRSC) saat permintaan di Region lain memodifikasi item yang sama. Strong multi-Region consistency tidak dapat membiarkan kedua kemenangan mendarat, jadi satu tulisan ditolak. AWS mendokumentasikannya sebagai dapat dicoba ulang: backoff dan coba lagi, dan kurangi kontensi lintas-Region pada item panas di mana Anda bisa.

Apa artinya

ReplicatedWriteConflictException: One or more items in this request are
being modified by a request in another Region.

Global table klasik (eventually consistent) menerima tulisan bersamaan di mana-mana dan merekonsiliasi setelahnya dengan last-writer-wins. Global table MRSC membuat trade sebaliknya: tulisan harus dikoordinasikan lintas Region sebelum diakui, jadi dua Region memodifikasi item yang sama pada momen yang sama adalah konflik yang sesungguhnya — dan satu sisi mendapat exception ini alih-alih penimpaan diam-diam.

Mengapa terjadi

  • Item yang sama ditulis dari beberapa Region secara bersamaan — dua deployment aplikasi keduanya memperlakukan item sebagai milik mereka untuk diperbarui.
  • Item koordinasi panas — counter, lock, atau item config singleton yang disentuh setiap Region adalah magnet konflik alami.
  • Badai retry lintas Region — retry simultan dari operasi logis yang sama dari Region berbeda terus bertabrakan ulang.

Cara memperbaikinya

  1. Coba lagi dengan exponential backoff dan jitter — konflik bersifat sesaat; setelah tulisan Region lain selesai, retry berlanjut. AWS menandai kesalahan ini dapat dicoba ulang:

    // let the SDK's adaptive retry handle it, or catch and back off:
    catch (e) {
      if (e.name === 'ReplicatedWriteConflictException') return retryWithBackoff(op);
      throw e;
    }
  2. Beri item Region asal — arahkan tulisan untuk kunci tertentu melalui satu Region (berdasarkan residensi pengguna, tenant, atau partisi), menjaga Region lain read-mostly. Kontensi hilang ketika hanya satu Region yang memutasi item.

  3. Buat update bersamaan komutatif — update counter atomik (ADD / SET x = x + :n) pada atribut terpisah lebih sedikit berkonflik daripada siklus read-modify-write pada seluruh item.

  4. Periksa ulang niat setelah kalah balapan — Region lain mengubah item; retry berkondisi (ConditionExpression pada atribut versi) memastikan tulisan Anda masih valid terhadap keadaan baru.

Mengawasi item berubah lintas Region jauh lebih mudah dengan data di depan Anda — aplikasi desktop DynoTable terhubung ke setiap Region replika sehingga Anda dapat membandingkan item berdampingan, dan kalkulator harga DynamoDB memperkirakan biaya tulisan yang direplikasi.

Kesalahan terkait

References

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

DynoTable adalah klien desktop yang cepat untuk DynamoDB — jelajahi tabel, jalankan query gaya SQL, dan edit Item secara lokal.