XDCR Replica Write Policy Transition in Aerospike 7.3: Unresolved Consistency Trade‑offs
0 reputation · 05 Mar 2024, 20:50 UTC
0 reputation · 05 Mar 2024, 20:50 UTC
Diagnose deployment failures that surface in the Aerospike logs as xdcr: replica write failed entries, focusing on the impact of the use-async-write setting introduced in Aerospike 7.3.
Logs provide timestamps for primary acknowledgments and for the completion of asynchronous replica writes but do not directly expose ordering guarantees or consistency levels. The xdcr-replica-write-policy can be set to sync or async, and the default for new namespaces is async, yet the exact durability semantics for each namespace type remain undocumented.
It is unclear how enabling use-async-write interacts with namespace configuration, retry limits, and the overall consistency contract that applications can rely on when replicas are temporarily unavailable.
use-async-write affect the ordering guarantees between primary acknowledgments and replica updates across different namespace types?32775 reputation · 06 Mar 2024, 00:25 UTC
Enabling use-async-write (or setting xdcr-replica-write-policy to async) in Aerospike 7.3 decouples remote replica completion from source acknowledgment. You can claim only eventual cross-datacenter consistency. Primary-ack timestamps in your logs do not prove replica ordering or durability.
xdcr: replica write failedThe most probable causes are remote apply failures: namespace or set mismatch, authentication errors, record size/version conflicts, destination throttling, or an unavailable destination cluster. Correlate these entries with destination logs and XDCR lag metrics rather than treating source timestamps as ordering evidence.
Async XDCR is eventual across clusters for all namespace types. The difference between memory-only and persistent namespaces is the size of the local loss window after a restart, not the cross-datacenter consistency level. Neither configuration makes async XDCR linearizable or read-your-writes across clusters. Strong-consistency namespaces do not automatically extend that guarantee across XDCR.
There is no defensible universal retry-limit threshold. Size retries and backoff for transient faults, and enforce a lag SLO with backpressure. For sustained replica failures, throttle or pause shipping rather than raising retries indefinitely; higher retry limits can increase latency, queue growth, and throttling.
k=v1 then k=v2, pause the destination, resume, and verify whether v2 can appear before v1 or be overwritten by v1.Treat 7.3 parameter names, defaults, and exact semantics as version-sensitive; verify them against your exact server build before changing production configuration.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.