- name
- implement-optimistic-concurrency-control
- category
- code
- description
- Implement optimistic concurrency control with version identity, conditional writes, conflict semantics, retries, merge policy, and user recovery. Use when concurrent updates must not silently overwrite one another.
# implement-optimistic-concurrency-control
## When to use
- Use where contention is bounded and lost updates are unacceptable.
- Do not automatically retry noncommutative or externally side-effecting updates.
## Preconditions
- Define entity, invariants, version source, operations, conflict rate, merge authority, and clients.
## Procedure
1. Choose monotonic version, ETag, compare value, or database-native token.
2. Return the version with every readable representation.
3. Require the expected version in each mutation and update atomically.
4. Return a structured conflict with current version and safe reconciliation data.
5. Retry only operations proven idempotent and commutative.
6. Test simultaneous create, update, delete, batch, stale cache, and side effects.
## Failure plan
- Route semantic conflicts to explicit user or domain resolution.
## Worked example
Two editors change a policy; the second write receives a conflict rather than erasing the first.
## Done
- A concurrency implementation records version contract, atomic update, conflict response, retry, merge, and telemetry
- Simultaneous, stale, delete, batch, idempotency, side-effect, cache, and user-recovery tests verify correctness
在 GitHub 查看