Resumen

  • Happened-before es el menor orden parcial generado por la secuencia local de cada proceso, el envío antes de la recepción del mismo mensaje y el cierre transitivo de esas relaciones.
  • La Clock Condition funciona en una sola dirección: a → b exige C(a) < C(b). Una marca escalar menor no demuestra que a causó, informó o incluso precedió físicamente a b.
  • Dos eventos concurrentes no tienen camino happened-before en ningún sentido. Eso significa que el modelo observado no los ordena, no que ocurrieran en el mismo instante de reloj.

Dos servicios producen dos registros tentadores. A recibe el tiempo lógico 41 y B el 42. La consola ordena las filas, dibuja una flecha y parece explicar que A causó B. La aritmética ofrece una narración limpia; no aporta por sí sola la prueba.

El artículo de Leslie Lamport de 1978, Time, Clocks, and the Ordering of Events in a Distributed System, no descubrió un reloj global escondido. Definió con precisión qué orden puede justificar un sistema distribuido sin depender de él.

Un orden parcial construido con aristas observables

Lamport modela procesos que contienen secuencias de eventos y se comunican mediante mensajes. La relación happened-before es la relación más pequeña que cumple tres reglas: un evento anterior de un proceso precede a uno posterior; el envío de un mensaje precede a su recepción; y la relación es transitiva.

La palabra «más pequeña» conserva la incertidumbre. Si no existe a → b ni b → a, los eventos son concurrentes. El modelo no completa el hueco con una conjetura.

Lamport interpreta a → b como la posibilidad de que a afecte causalmente a b. Hay una ruta por la que podría viajar información. Eso no demuestra que el contenido de a haya producido el resultado de b, que una persona pretendiera ese efecto o que exista responsabilidad. Una ruta causal posible y una causa semántica son evidencias distintas.

También importa qué se define como evento. El artículo señala que recibir un mensaje puede significar activar un bit de interrupción o ejecutar el manejador; la elección altera el orden. Una cronología sin una versión de la definición de evento carece de una unidad estable.

Una implicación, no una equivalencia

Un reloj lógico asigna un número a cada evento. La Clock Condition afirma que si a → b, entonces C(a) < C(b). Para cumplirla, cada proceso incrementa su contador entre eventos, adjunta su valor a cada mensaje y, al recibirlo, adelanta el reloj más allá de su valor actual y del sello recibido.

Las reglas preservan las flechas conocidas. No autorizan la inferencia inversa. De C(a) < C(b) no se desprende a → b.

No es una limitación accidental. Si toda comparación numérica probara happened-before, los eventos concurrentes tendrían que compartir el mismo valor. Pero un evento puede ser concurrente con dos eventos que sí están ordenados entre sí dentro de otro proceso; igualarlos violaría ese orden local.

El reloj escalar certifica que una arista conocida no aparece invertida. No certifica que toda pareja creciente tenga una arista causal.

El orden total es una política

Algunas aplicaciones necesitan una decisión única donde el orden parcial admite varias. Lamport extiende el orden clasificando por tiempo lógico y usando un orden fijo de procesos para romper empates. El resultado es total y coherente con happened-before.

Sin embargo, no es único. Otro reloj válido o una regla distinta de desempate puede producir otra linealización. Lo único determinado de forma única por el sistema de eventos es el orden parcial.

Una cola o un servicio replicado puede elegir legítimamente una secuencia. Debe registrar que el desempate es una regla de control. Si lo presenta como una reconstrucción del pasado, transforma una decisión operativa en un falso hecho histórico.

La llamada telefónica que no estaba en el sistema

El ejemplo de «comportamiento anómalo» del artículo delimita la telemetría. Una persona envía A desde un ordenador, llama por teléfono a una amiga de otra ciudad y le pide que envíe B. Como la llamada está fuera del sistema, B puede obtener un sello menor y aparecer antes que A.

Ningún algoritmo que observe sólo los eventos internos puede reconstruir una arista que nunca registró. Lamport propone introducir explícitamente la información de orden ausente o utilizar relojes físicos suficientemente sincronizados bajo condiciones más fuertes.

Hoy la arista omitida puede ser una llamada de soporte, un webhook, una aprobación humana o una cola externa. «No se encontró camino» significa «no se encontró en esta captura», no «no hubo influencia en la realidad».

Tiempo lógico, vectorial y físico

El reloj escalar conserva la implicación necesaria y permite crear un orden total consistente. Una década después, Colin Fidge y Friedemann Mattern desarrollaron estructuras vectoriales que conservan más información del orden parcial. Mattern advirtió que proyectar eventos parcialmente ordenados sobre enteros lineales pierde información: eventos posiblemente concurrentes reciben valores diferentes como si tuvieran un orden definido.

Los vectores pueden permanecer incomparables cuando ninguno está en el pasado causal del otro. Resulta útil para depuración, estados globales y conflictos. Aun así, depende de los procesos, eventos y mensajes registrados; no descubre una llamada ausente ni prueba el motivo de una decisión humana.

El tiempo físico responde otra pregunta. El mismo texto de Lamport estudia velocidad del reloj, deriva, retardo mínimo de mensajes y límites de sincronización. Esas hipótesis acercan las etiquetas al tiempo real con una incertidumbre declarada; no convierten un contador lógico en reloj de pared.

La historia de autores también requiere límites. Lamport formalizó happened-before y los relojes escalares, reconociendo que Paul Johnson y Bob Thomas habían usado antes marcas de tiempo en mensajes. Los relojes vectoriales pertenecen al trabajo posterior de Fidge y Mattern.

Qué debe contener una afirmación de orden

Un registro defendible identifica la definición y versión del evento, el proceso, la secuencia local, el identificador del mensaje, la pareja envío-recepción, el algoritmo de reloj y la frontera de la telemetría. Si afirma orden físico, añade la fuente y el margen de error. Si afirma causa, aporta el mecanismo que cambió el resultado.

Así puede concluir con honestidad: happened-before dentro del modelo capturado; concurrencia dentro de ese modelo; prioridad creada por un desempate; antelación física dentro de un intervalo; o causalidad semántica todavía no demostrada.

La aportación de Lamport no fue ordenar todo y llamar verdad al resultado. Fue separar el orden que el sistema conoce, el que el sistema elige y el que aún no puede probar.

Fuentes