Skip to content

Archive

Concurrency Control

4 articles
Software Engineering 22 Sep 2026 6 min read

Write Skew Can Break Invariants Under Snapshot Isolation

Write Skew Can Break Invariants Under Snapshot Isolation Snapshot isolation gives each transaction a stable view of committed data and usually rejects concurrent updates to the same row. That combination removes many anomalies that appear under weaker isolation levels. It does not, however, make every application invariant serializable. Write skew is the important edge case. Two transactions read overlapping state, make decisions from the same valid snapshot, then update different rows. Because their write sets do not collide, both can commit. The combined result can violate a rule that neither transaction violated in its own snapshot.

Software Engineering 21 Sep 2026 8 min read

Write Skew Breaks Invariants Under Snapshot Isolation

Write Skew Breaks Invariants Under Snapshot Isolation Snapshot isolation gives each transaction a stable view of committed data. That property removes many anomalies caused by values changing midway through a transaction. It does not, by itself, make every concurrent execution equivalent to some serial order. Write skew is a compact example of the gap. Two transactions read the same valid state, make decisions from that state, then write different rows. Because their write sets do not overlap, both commits can succeed even though the combined result violates a rule that each transaction preserved in isolation.

Software Engineering 21 Sep 2026 7 min read

Adaptive Concurrency Limits Track Available Service Capacity

Adaptive Concurrency Limits Track Available Service Capacity A fixed concurrency ceiling is easy to operate when service capacity is stable. Real systems rarely stay in one operating regime. Database contention, cache hit rate, request mix, downstream latency, CPU availability, and deployment changes can all move the amount of work a service can sustain at once. Adaptive concurrency control treats the in-flight limit as a control variable. The limiter admits work up to a current ceiling, observes service behavior, then adjusts that ceiling. The aim is not maximum concurrency. It is enough concurrency to use available capacity without allowing queues to grow far beyond the useful operating region.

Software Engineering 16 Sep 2026 8 min read

HTTP If-Match Turns Representation State Into a Write Precondition

An HTTP origin can refuse a PUT or DELETE before applying it when the request carries If-Match and the selected representation no longer has an accepted entity tag. The condition converts a representation validator into a write precondition: a client can say that a mutation is valid only against state matching a version it previously observed. This mechanism addresses a specific concurrency boundary. It can prevent one client from silently replacing resource state after another client has changed the selected representation. It does not turn HTTP into a transaction protocol, lock the resource between requests, or guarantee that an entity tag represents every piece of application state involved in a mutation.