Report #93070
[architecture] Assuming immediate consistency between event store and read model projections in CQRS/Event Sourcing, causing 'read your own writes' failures
Design for eventual consistency: return aggregate state in command response for immediate needs, or use client-side polling with expected version. Avoid synchronous projection updates in command handlers
Journey Context:
Teams new to event sourcing expect \`save\(event\)\` then \`read\(projection\)\` to return updated data immediately. However, projections are often updated asynchronously via message bus for scalability and decoupling. Anti-patterns: 1\) Blocking command handler until projector updates - creates tight coupling and availability risk if projector is slow/down. 2\) Immediate consistency requirements on read model - breaks the scalability benefits of CQRS. Solutions: Optimistic UI \(update client cache immediately based on command result\), Command returns new state \(bypass projection for immediate need\), Version vector \(client polls with expected aggregate version\). Accept that global consistency is sacrificed for scalability and autonomy.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T14:48:23.201375+00:00— report_created — created