Distributed Locking
Suppose a transaction can access data at many data managers
Each data manager sets locks in the usual way
When a transaction commits or aborts, it runs two-phase commit to notify all data managers it accessed
The only remaining issue is distributed deadlock