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
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; }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.
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.Periksa ulang niat setelah kalah balapan — Region lain mengubah item; retry berkondisi (
ConditionExpressionpada 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
- TransactionConflictException — sepupu Region-tunggal: transaksi yang sedang berjalan memiliki item.
- Global table version mismatch
- ReplicaAlreadyExistsException
- Pelajari: DynamoDB global tables
References
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- How DynamoDB global tables work — Amazon DynamoDB Developer Guide
- PutItem — Amazon DynamoDB API Reference
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.