Bloqueo Distribuido de Estado
El bloqueo distribuido (State Locking) evita que multiples desarrolladores o pipelines de CI/CD ejecuten testform apply de manera simultanea, protegiendo el ledger de corrupcion y condiciones de carrera.
Como Funciona el Bloqueo
Sección titulada «Como Funciona el Bloqueo»- Intento de Adquisicion: Al iniciar cualquier comando mutativo (
apply,destroy), Testform genera un identificador unico de bloqueo (Lock Info):ID: UUID v4 aleatorio.Operation: Operacion en curso (ejemplo:OperationTypeApply).Who: Usuario del sistema operativo y hostname.Created: Marca temporal UTC.
- Escritura Atomica: El backend verifica si ya existe un bloqueo activo. Si existe, la ejecucion se detiene inmediatamente con codigo de error.
- Liberacion Segura: Al finalizar la aplicacion (exitosa o con error controlado), Testform elimina el registro del mutex.
Que Ocurre Si el Bloqueo Falla?
Sección titulada «Que Ocurre Si el Bloqueo Falla?»Si otro proceso esta ejecutando una modificacion, Testform emite el siguiente mensaje descriptivo:
Error adquiriendo bloqueo de estado: Estado bloqueado por otro proceso.
Detalles del Bloqueo: ID: e92c1404-9fb6-455c-b452-f4705574581c Ruta: produccion/testform.state Operacion: OperationTypeApply Usuario: github-runner-04@actions-node Creado: 2026-10-21 14:15:22 UTC
Testform no continuara para evitar danar el archivo de estado.Espera a que el proceso anterior finalice.Liberacion Forzada (testform force-unlock)
Sección titulada «Liberacion Forzada (testform force-unlock)»Si un pipeline de CI/CD fue cancelado abruptamente a nivel de sistema (por ejemplo, timeout de GitHub Actions o terminacion forzada del contenedor), el bloqueo puede quedar huerfano.
Para liberarlo manualmente tras verificar que ningun proceso sigue activo:
testform force-unlock e92c1404-9fb6-455c-b452-f4705574581cSalida esperada:
Verificando bloqueo 'e92c1404-9fb6-455c-b452-f4705574581c'...Bloqueo liberado con exito. El estado vuelve a estar disponible para conciliacion.