Large scale cloud applications are difficult to program due to the need to access data in a consistent manner.
To lift this burden from programmers, Deferred Update Replication (DUR) protocols provide serializable
transactions with both high availability and performance in read-dominated workloads. However,
the inherently optimistic nature of DUR protocols makes them prone to thrashing in conflict-intensive
scenarios: existing DUR schemes, in fact, avoid any synchronization during transaction execution; thus,
these schemes end up aborting any update transaction whose reads are no longer up to date by the time
it attempts to commit.
To tackle this problem, we introduce Bumper, a set of innovative techniques to reduce aborts of transactions
in high-contention scenarios. At its core, Bumper relies on two key ideas. First, we spare update
transactions from spurious aborts (i.e., unnecessary aborts of serializable transactions), by attempting to
serialize the transactions in the past. For this, we use a novel distributed concurrency control scheme that
we call Distributed Time-Warping (DTW). And second, we avoid aborts due to contention hot spots (that
cannot be tackled by DTW) via a programming abstraction that we call Delayed Actions. These, allow for
efficiently serializing, in an abort-free fashion, the execution of conflict-prone data manipulations.
By means of an extensive evaluation, on a distributed system of 160 nodes, we show that Bumper
can boost performance up to 3× in conflict-intensive workloads, while imposing negligible (about 2.5%)
overheads in uncontended scenarios.