distribution distributed distributed-transactions

distribution - Compromiso de tres fases



distributed distributed-transactions (1)

En 3PC es posible averiguar la decisión fallida del coordinador consultando las cohortes activas restantes. Si alguna cohorte activa está en estado de pre-confirmación, eso significa que todos aceptaron comprometerse (de lo contrario, el coordinador no habría enviado pre-confirmación). Y tenemos que cometer el resto de las cohortes porque los fallidos podrían haber cometido.

Si ninguna de las cohortes se encuentra en estado de pre-confirmación, podemos asumir que el coordinador no ha enviado "confirmación" a ninguna cohorte, por lo que no se han producido efectos secundarios y podemos abortar.

Aquí hay una buena explicación: http://the-paper-trail.org/blog/consensus-protocols-three-phase-commit/

Entiendo que se realizó una confirmación en tres fases para resolver el problema de la "confirmación en dos fases" cuando en la segunda fase el coordinador y la cohorte fallan al mismo tiempo, es imposible saber si el coordinador ha decidido sobre un mensaje de confirmación.

Aparentemente, el compromiso de tres fases apunta a resolver este problema agregando una fase adicional. Pero, ¿no enfrenta exactamente el mismo problema durante la tercera fase, si el coordinador y una cohorte fallan?