# Optimistic Locking

Record: `arch:optimistic-locking`
Kind: pattern
Layer: [Atomic Boundary](https://banes-lab.com/records/layer/atomic-boundary.md)
Severity: contextual
Scope: persistence, transaction
Canonical: https://banes-lab.com/ontology#arch-optimistic-locking

## Repair

- Refactored by: Add Version Column, Add Compare-And-Swap
- Detected by: updates without version check
- Violated by: [lost update](https://banes-lab.com/records/arch/lost-update.md)
- Measured by: conflict/retry rate
- Enforced by: repository rules, integration tests

## requires

- [Version Field](https://banes-lab.com/records/lex/version-field.md)

## reinforces

- [Concurrency Control](https://banes-lab.com/records/arch/concurrency-control.md)

## enables

- [Conflict Detection](https://banes-lab.com/records/lex/conflict-detection.md)

## conflicts-with

- [Blind Overwrite](https://banes-lab.com/records/lex/blind-overwrite.md)

## tensions-with

- [Retry Complexity](https://banes-lab.com/records/lex/retry-complexity.md)

## tensions

- [Optimistic Locking Retry Complexity](https://banes-lab.com/records/tension/optimistic-locking-retry-complexity.md)
