Context: Concurrent objects with asynchronous messaging are an increasingly popular way to struc-ture highly available, high performance, large-scale software systems. To ensure data-consistency and sup-port synchronization between objects such systems often use distributed transactions with Two-Phase Locking(2pl) for concurrency control and Two-Phase commit (2pc ) as atomic commitment protocol.

Inquiry: In highly available, high-throughput systems, such as large banking infrastructure, however,2plbecomes a bottleneck when objects are highly contended, when an object is queuing a lot of messages becauseof locking.

Knowledge: This allows thepsaclock mechanism to check whether the effect of two incoming messages atthe same time are independent, and to avoid locking if this is the case. As a result, more messages are directlyaccepted or rejected, and higher overall throughput is obtained.

Grounding: We have implementedpsacfor a state machine-based DSL called Rebel, on top of a runtimebased on the Akka actor framework. Our performance evaluation shows thatpsacexhibits the same scalabilityand latency characteristics as standard2pl/2pc, and obtains up to 1.8 times median higher throughput incongested scenarios.

Importance: We believepsacis a step towards enabling organizations to build scalable distributed applica-tions, even if their consistency requirements are not embarrassingly parallel