“Abrazo mortal” es un término informático, un tanto dramático, que describe la peor de las pesadillas de los profesionales de bases de datos de los años noventa. Estadísticamente y dada la velocidad de procesamiento de los modernos servidores de datos y programas, las posibilidades de ocurrencia son muy remotas pero totalmente probables. Para entenderlo hay que tener en cuenta que:
a- Un programa es un conjunto de comandos o instrucciones que se repiten cíclicamente a alta velocidad accediendo habitualmente a registros de una base de datos.
b- Un registro de base de datos es un conjunto de campos con información referida u asociada a un sujeto lógico. Ej: dirección, teléfono, deuda acumulada, etc. En este ejemplo todos los datos pertenecen a, por ejemplo, un cliente.
Las reglas que rigen a los registros es de que siempre están accesibles para un programa salvo cuando otro programa lo esta accediendo.
Entonces si un programa accede a un registro de una base de datos, inmoviliza el registro y lo convierte en inaccesible hasta que finaliza su operación (ej: actualización de la deuda del registro), por lo que, si desafortunadamente otro programa necesita un dato de ese registro (ej: el numero telefónico) unos nanosegundos después de que lo tomó el primer programa, deberá esperar pacientemente algunos milisegundos hasta que dicho programa finalice la transacción y libere al registro.
Ahora bien, ¿Que sucede si el programa A accede y bloquea al registro X para realizar una transacción, pero para completarla necesita los datos de un registro Y, que un programa B bloqueó unos nanosegundos antes, con el objeto de actualizarlo en función de los datos de un registro Z pero dicho registro, esta bloqueado por un programa C que esta pacientemente esperando a que el registro X quede liberado por nuestro primer programa A?
Si el ejemplo anterior no fue claro imaginen lo siguiente:
Juan va a la casa de Pedro con la consigna de no seguir adelante con las acciones de su vida sin primero verlo, y en el caso de que Pedro no este en su casa, esta dispuesto a esperarlo en la entrada de su casa hasta que este regrese. Pero Pedro salió de su casa para ver a Diego con la misma consigna en el mismo momento y Diego a su vez, fue a ver a Juan en las mismas circunstancias. ¿Que ocurre entonces?. Los informáticos hablaríamos de bucle infinito, u abrazo mortal. Solo hay una solución. El operador de Base de Datos debe elegir y “matar” a un programa para evitar el colapso total del sistema. En el caso de Juan Pedro o Diego, la solución es la misma. Cada uno desconoce que se encuentra en un bucle sin solución, desde la perspectiva individual de cualquiera de ellos la vida se ha detenido y no puede continuar hasta que algo ajeno al mismo ocurra. Llamemos a ese “algo” destino. Entonces, el destino, deberá elegir a uno de los tres, matarlo y devolverlo a la puerta de su casa. De esa forma se destrabarían las vidas de los otros dos y el abrazo mortal habrá sido destruido.
Afortunadamente nada es mortal en el ámbito virtual de la informática… todavía. No me animo a afirmar lo mismo con respecto a la vida real...
- Otra vez tarde – Dice Diego mirando el reloj. La esfera digital indica las 20:35.
Diego apaga mecánicamente las luces de su estudio y cierra con llave la puerta.
Las puertas se abren, el ascensor llega vacío y Diego ingresa. Presiona el botón de planta baja y se recuesta contra el espejo, las puertas se cierran, un zumbido precede a la habitual sensación de vacío en el estómago producida por el aparato al ponerse en movimiento.
Anticipando al frío de la noche, Diego levanta las solapas de su abrigo, felizmente su departamento esta a solo cuatro cuadras de distancia.
El proyecto en que se encuentra trabajando esta a solo unos pasos de terminar. Esto ha tenido a su mente totalmente ocupada los últimos meses.
- Por fin la luz al final del túnel – Se dice sonriendo.
Sorprendido de pronto observa que la puerta del ascensor esta abierta.
- ¿Cuándo llegué? – el reloj muestra las 20:40
Sin darle más importancia, sale al hall y traspone la puerta de entrada al edificio.
El frío es mayor de lo que esperaba, resueltamente gira a la izquierda y sin levantar la vista para evitar el frío viento, camina por la acera hasta la esquina. Su mente vuela por los detalles finales del proyecto.
Un bocinazo interrumpe sus pensamientos, el semáforo esta rojo, un taxista se asoma por la ventanilla para insultarlo.
- ¿En que estas pensando Diego? – Se dice.
De un salto llega a la acera y continúa su camino. A su izquierda la música fuerte del bar interrumpe sus pensamientos, un vistazo y por la ventana observa a un grupo de amigos que festeja algún evento. Una racha de viento lo obliga a cerrar aún más el cuello de su abrigo. Una señora avanza a paso acelerado en sentido contrario, por unos instantes sus miradas se cruzan. El callejón a mitad de cuadra parece más oscuro que otras noches, un gato maúlla en la oscuridad. Una ambulancia pasa velozmente por la calle con sus luces encendidas. Una pareja ingresa sonriente al edificio cercano a la esquina. Diego se apresta a cruzar la calle. De pronto un bocinazo.
El semáforo esta en rojo, el taxista se asoma por la ventanilla y le grita un improperio.
- ¿Cuáles son las posibilidades? – Diego se pregunta.
De un salto llega a la a vereda y continua su camino, pero algo esta mal. La música del bar y la vista del grupo festejando lo hace detener.
- ¿Qué mierda pasa?, ¡recién acabo de pasar por aquí!.
El reloj le indica que son las 20:41. Retomando la marcha, una sensación de miedo se apodera de Diego. Adelante por la acera la señora se aproxima caminando. Diego apura el paso, el gato maúlla en el callejón oscuro, la ambulancia pasa raudamente y la pareja ingresa sonriente al edificio.
Al llegar a la esquina observa a un taxi que viene por la izquierda. El corazón le late con fuerza.
- ¿Qué mierda…?
La cabeza le da vueltas, apurando el paso intenta nuevamente el recorrido, el reloj indica las 20:41.
- ¿Cómo puede ser?
Diego esta detenido hace un tiempo frente al bar sin saber que hacer. El grupo de amigos se ríe a las carcajadas. Más concentrado que nunca Diego retoma la marcha. Los eventos se repiten.
- Algo esta muy mal – Dice Diego con temor.
Francamente asustado consulta al reloj antes de llegar a la esquina, son las 20:43. Diego decide girar en la esquina a la izquierda para hacer otro recorrido, el taxi pasa raudamente pero la música del bar y el grupo de amigos los sorprende nuevamente.
- ¿Como puede ser si giré en la esquina?
Unos pasos mas adelante aparece la señora. El reloj indica las 20:42.
No importa lo que Diego haga la historia se repite. Después de dos intentos por evitar lo inevitable Diego decide volver sobre sus pasos pero todo ocurre igual en sentido contrario. La pareja entra al departamento, la ambulancia pasa como una exhalación, el gato maúlla en el callejón, la mujer camina apresurada, los amigos festejan en el bar y al llegar a la esquina el taxi cruza la intersección. No importa el rumbo que tome, norte sur este u oeste, la cuadra es la misma, los eventos idénticos, no importan si se miran desde una acera o la acera opuesta, caminando en un sentido u otro. Todo ocurre igual, exactamente igual.
Diego ha perdido la noción del tiempo. El reloj insiste que son las 20:42 o 20:41 o 20:43. Nunca antes nunca después.
Sin pensarlo más entra al bar. Se dirige al mostrador y con un “buenas noches” intenta llamar la atención del propietario.
El hombre no le responde.
- ¡Buenas noches! – dice Diego en voz alta.
Diego es ignorado como si no lo vieran. Se acerca a la mesa del grupo y toca a uno de los jóvenes en el hombro. Horrorizado Diego atraviesa con su mano el cuerpo del muchacho.
Por unos segundos queda paralizado.
- ¿Soy un fantasma?
Diego siente que se ha vuelto loco, de nada le sirve intentar interactuar con la señora o la pareja. Aparentemente para ellos Diego no existe. Nadie lo percibe. Juntando coraje intenta interponerse en el camino de la ambulancia. Esta lo atraviesa como si no existiera.
¿Ahora qué será de mí?
Diego se sienta en el oscuro callejón, solo le queda esperar, el gato maúlla una sola vez.
Para tranquilidad del lector, Las Bases de Datos modernas ya poseen un sistema de detección y resolución a nuestras viejas pesadillas, el bucle infinito o abrazo mortal ya tiene solución, es la misma ("matar" un programa) pero ejecutada en forma automática por el sistema. En el ámbito de la informática el raro problema esta resuelto. En la vida real aun no. Si no me creen busquen a Diego en un callejón, sentado mirando fijo a su reloj detenido en el tiempo.
|