1. A commit protocol called Three-Phase Commit (3PC) can avoid blocking even if the coordinator site fails during recovery.
2. The basic idea is that when the coordinator sends out prepare messages and receives yes votes from all subordinates, it sends all sites a precommit message, rather than a commit message.
3. When a sufficient number| more than the maximum number of failures that must be handled|of acks have been received, the coordinator force-writes a commit log record and sends a commit message to all subordinates . 4. In 3PC the coordinator effectively postpones the decision to commit until it is sure that enough sites know about the decision to commit; if the coordinator subsequently fails, these sites can communicate with each other and detect that the transaction
aborted, if none of them has received a precommit message|without waiting for the coordinator to recover.
5. The 3PC protocol imposes a significant additional cost during normal execution and requires that communication link failures do not lead to a network partition (wherein some sites cannot reach some other sites through any path) in order to ensure freedom from blocking. For these reasons, it is not used in practice.