Resumen
- El participante vota sí después de conservar información suficiente para rehacer o deshacer su parte; desde entonces debe aceptar el desenlace legítimo, pero aún no lo conoce.
- La decisión duradera del coordinador es un hecho separado. Si el participante preparado no puede encontrarla, esperar preserva mejor la atomicidad que fabricar una respuesta local.
- El commit coordina recursos transaccionales participantes; no garantiza por sí solo que un correo, una tarea humana o una acción física externa se haya ejecutado una sola vez.
Un servidor vuelve después de una caída. El trabajo local terminó bien, el registro prepare está en almacenamiento estable y el servidor recuerda haber votado sí. Falta, sin embargo, la decisión. Llamarlo «casi confirmado» sería confundir preparación con autoridad. El estado correcto es preparado y en duda.
Los textos de Jim Gray convierten esa diferencia en una herramienta para pensar. La primera fase no decide: construye la capacidad de obedecer y limita lo que el participante puede hacer por su cuenta. La segunda comunica un resultado que debe existir de manera duradera en otro lugar.
Preparar es adquirir una obligación
En Notes on Data Base Operating Systems (1978), Gray explica que el coordinador pide a cada participante llegar a un estado desde el cual pueda rehacer o deshacer su contribución. Antes de responder AGREE, debe guardar de forma segura la información UNDO y REDO necesaria. El voto es la prueba de esa preparación.
Hasta entonces puede negarse y abortar. Después del sí debe conservar registros, bloqueos o versiones que le permitan cumplir tanto commit como abort. Su éxito local no se vuelve una decisión global; se vuelve una promesa condicionada.
C. Mohan, Bruce Lindsay y Ron Obermarck describen el mismo límite en el sistema distribuido R*. El subordinado fuerza el registro de preparación, envía YES y entra en el estado preparado. A partir de ahí no puede confirmar ni abortar unilateralmente. La frase operativa importante no es «terminó», sino «ya no puede elegir solo».
El commit aparece en otro registro
El coordinador recoge los votos. Solo cuando se satisfacen las condiciones del protocolo fuerza su registro global de commit y después comunica el resultado. El trabajo de R* denomina a esa escritura el punto de commit. Por eso el sí individual no puede significar que la transacción ya está confirmada.
Si cada participante con éxito local decidiera por su cuenta, una caída en otro nodo produciría resultados incompatibles. Uno podría exponer cambios mientras otro los deshace. Las dos fases existen para que las capacidades locales queden sometidas a una sola decisión duradera.
Conocer o sospechar que los demás también votaron sí tampoco entrega automáticamente la autoridad del coordinador. La información sobre votos y la facultad de fijar el desenlace no son equivalentes. Recuperar exige localizar el resultado auténtico.
El registro recuerda la promesa, no el deseo
La regla de recuperación de Gray es deliberadamente sobria. Si no aparece un acuerdo forzado, el participante puede abortar porque no dejó salir una promesa duradera. Si lo encuentra, debe preguntar por la decisión y aplicar REDO o UNDO según la respuesta autorizada.
Un panel que agrupe prepared y committed bajo «éxito» borra el dato crucial. La aplicación puede estar sana, las filas locales pueden parecer completas y todas las comprobaciones pueden haber pasado, mientras el resultado global sigue sin conocerse.
Conviene mostrar el identificador de la transacción, el coordinador o autoridad de recuperación, la hora del prepare, el último contacto confirmado y los recursos aún retenidos. Volver a ejecutar la operación empresarial no resuelve el estado anterior; puede duplicar precisamente el efecto que se intentaba proteger.
Bloquearse es negarse a inventar el resultado
Si el coordinador falla tras recibir un sí y antes de que el participante conozca la decisión, el 2PC clásico puede bloquearse. Gray y Leslie Lamport lo señalan explícitamente en Consensus on Transaction Commit: la dependencia de un único coordinador permite el caso normal, pero su fallo puede detener el avance.
La espera tiene coste: bloqueos prolongados, capacidad inmovilizada y operaciones posteriores detenidas. Aun así, expresa dos límites reales, falta de conocimiento y falta de autoridad. Suponer commit puede dividir la transacción; suponer abort puede contradecir un commit ya hecho duradero.
R* analiza las decisiones heurísticas de un operador en situaciones excepcionales y advierte que pueden discrepar del resultado global. Por tanto, una resolución forzada debe registrarse como desviación, alertar de una posible inconsistencia y activar reconciliación. No convierte el protocolo en no bloqueante.
El mundo exterior no queda incluido por asociación
En «The Transaction Concept: Virtues and Limitations», Gray separa las acciones protegidas de las «acciones reales». Un gestor de recursos puede restaurar datos. No puede recoger efectivo dispensado, retirar un correo entregado, deshacer una decisión humana ni invertir una acción de un dispositivo que nunca participó en la transacción.
Esos efectos necesitan otra garantía: retrasarlos hasta después del commit, usar una clave de idempotencia, guardar una solicitud duradera que otro componente entregue, o diseñar una compensación. Compensar es realizar una acción nueva con semántica empresarial; no es un rollback mágico.
Así, la base puede estar confirmada y el mensaje exterior seguir pendiente o duplicado. También puede ocurrir que el dispositivo haya actuado y la transacción aborte. Un estado único llamado «completado» oculta esta asimetría. La observación correcta mantiene separados el commit transaccional y la prueba del efecto externo.
El crédito histórico también requiere límites
La claridad de Gray no autoriza un relato de inventor único. Su propia nota histórica menciona trabajos anteriores de Ron Obermarck, Earl Jenner y Steve Weick, y atribuye a Butler Lampson y Howard Sturgis un descubrimiento independiente del 2PC. Mohan, Lindsay y Obermarck firmaron el estudio y las optimizaciones de R*. Andreas Reuter coescribió el tratado posterior y Leslie Lamport el trabajo de Paxos Commit.
La aportación que este artículo sigue en Gray es un método de separación: qué sabe el sistema, qué ha prometido, quién puede decidir y qué consecuencias quedan fuera de su control. Esa precisión histórica y técnica evita que una palabra tan potente como commit prometa más de lo que el mecanismo ofrece.
Fuentes
- Jim Gray, “Notes on Data Base Operating Systems” (1978)
- Jim Gray, “The Transaction Concept: Virtues and Limitations” (1981)
- C. Mohan, Bruce Lindsay y Ron Obermarck, transacciones en R*
- Jim Gray y Andreas Reuter, Transaction Processing: Concepts and Techniques
- Jim Gray y Leslie Lamport, “Consensus on Transaction Commit”
- Microsoft Open Specifications, fases del commit
Informe para miembros
Contexto ampliado del perfil
Inicia sesión con el nivel de membresía adecuado para desbloquear el informe completo y las notas de las fuentes.
Solo para Strategic Circle
Strategic Circle
Abierto a todos los lectores. Desbloquea informes de perfil después de unirte e iniciar sesión.
Únete a Strategic CircleSolo para Leadership Alliance
Leadership Alliance
Para propietarios y directivos cualificados de activos de propiedad intelectual; inicia sesión para desbloquear los informes de la alianza.
Unirse a Leadership Alliance
