1. Introduction
Goal - ensure the atomicity of a transaction that accesses multiple resource managers
(Recall, resource abstracts data, messages, and other items that are shared by transactions.)
Why is this hard?
- What if resource manager RMi fails after a transaction commits at RMk?
- What if other resource managers are down when RMi recovers?
- What if a transaction thinks a resource manager failed and therefore aborted, when it actually is still running?