Estaba leyendo el protocolo de confirmación de 3 fases en wikipedia (http://en.wikipedia.org/wiki/Three-phase_commit_protocol) y aquí hay un escenario que me vino a la mente en el que 3PC fallará:protocolo de confirmación de 3 fases
supongamos que hay dos participantes a y B y un Coordinador de C:
1) C envió el mensaje precommit a a y antes de que envía comprometerse de antemano mensaje a B tanto a como C condiciones simultáneamente fallar. 2) La transacción ahora se reinicia y B termina abortándola porque no hay respuesta de A. 3) A confirma la transacción porque ya tiene el mensaje de precomisión.
¿No era este también el problema original en 2PC que se suponía que 3PC debía abordar? ¿Cómo está 3PC resolviendo el problema? Qué me estoy perdiendo. Gracias.
Lo siento, no estoy nada claro en esta parte del protocolo. ¿Los participantes no se comprometen hasta que reciben el mensaje de doCommit del coordinador? –
Supongo que tal vez el camino sea si el coordinador y todos los participantes que conocen el estado de un sistema fallan, entonces la transacción aborta una vez que se elige al nuevo coordinador (supongo que está en línea con lo que usted dijo). Y si el coordinador falla después de enviar el mensaje de precomisión y al menos uno de los participantes tiene un mensaje de precomisión, el resto en el sistema puede continuar y confirmar porque ya conocen el estado en el sistema. Entonces en ningún momento el sistema está en un estado indefinido –
@AbdulRahman ver mis actualizaciones – xvatar