Home

Woundwait

Wound-wait is a deadlock-prevention strategy used in database transaction processing and distributed locking. It relies on transaction age, typically represented by a timestamp, to resolve conflicts when multiple transactions contend for the same data item. In wound-wait, when a transaction T requests a lock on an item currently held by another transaction S, the system compares their timestamps. If T is older (has an earlier timestamp) than S, the holder S is aborted (wounded) so that T can proceed. If T is younger than S, T is made to wait until the lock is released by S. The aborted transactions may be retried later with a new timestamp.

The approach enforces a global order among transactions and avoids circular wait, thereby preventing deadlocks. It

Applications of wound-wait include distributed databases and systems implementing timestamp-based locking or two-phase locking variants where

Advantages include simplicity, clear deadlock avoidance, and strong progress guarantees for older transactions. Disadvantages include potential

favors
older
transactions,
granting
them
progress
by
sacrificing
younger
ones,
which
are
either
aborted
and
restarted
or
forced
to
wait.
Because
younger
transactions
can
be
repeatedly
aborted
by
interleaving
older
conflicting
requests,
wound-wait
can
lead
to
starvation
of
newcomers
in
heavily
skewed
workloads.
serializability
must
be
preserved
without
deadlocks.
It
is
categorized
as
a
pessimistic
concurrency
control
technique,
since
it
resolves
conflicts
by
aborting
transactions
rather
than
allowing
indefinite
waiting.
starvation
of
younger
transactions
and
the
overhead
of
abort-and-restart
cycles.
Related
concepts
include
wait-die,
timestamp
ordering,
deadlock,
and
two-phase
locking.