educative.io

Doubt on 3PC Network partition

In case of network partition in 3PC, the participant that take over has prepare to commit message, can tell other participants that didn’t get the prepare to commit message, to proceed with the commit right?

Otherwise all participants can simply abort the transaction. thus we can ensure atomicity property correct?


Course: Distributed Systems for Practitioners - Learn Interactively
Lesson: 3-Phase Commit (3PC)

Hi @Ashith_E_N !!
You’re on the right track in thinking about ways to ensure atomicity in the event of a network partition during a 3-phase commit (3PC) process. However, the scenario you described can still lead to issues, primarily because of the timing and uncertainty involved in a network partition.

When a network partition occurs, the system is essentially split into isolated sub-networks, with no communication between them. If a participant in one sub-network, which has received the “prepare-to-commit” message, takes over and instructs other participants in its sub-network to proceed with the commit, it acts correctly within its local context.

The problem arises with the participants in the other sub-network, which have not received the “prepare-to-commit” message. These participants, upon timeout or failure to communicate with the coordinator, are more likely to decide to abort the transaction, as they haven’t received any indication that all participants agreed to commit. This is where the atomicity property gets violated: one part of the system commits the transaction while another part aborts it.

Your suggestion that all participants simply abort the transaction in case of such a failure could indeed preserve atomicity, but it has a downside: it can significantly reduce the availability and effectiveness of the system. This approach means that any network failure, even a temporary one, would result in aborting potentially successful transactions, leading to reduced throughput and efficiency.

In summary, while your suggestion could theoretically ensure atomicity, it would do so at the cost of greatly reducing the system’s availability and efficiency. This is one of the inherent trade-offs in distributed systems, as described by the CAP theorem, which states that a system can only simultaneously provide two of the following three guarantees: Consistency, Availability, and Partition tolerance. In the case of 3PC under network partition, ensuring atomicity (consistency) and partition tolerance would compromise availability.
I hope it helps. Happy Learning :blush:

1 Like