Error de solución de problemas: se agotó el tiempo de espera a que se desbloquee el nombre del conjunto de datos - AWS Modernización de mainframe

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Error de solución de problemas: se agotó el tiempo de espera a que se desbloquee el nombre del conjunto de datos

En esta página, se describe cómo resolver el error cuando ve que otra aplicación de un entorno bloquea un conjunto de datos compartido.

  • Motor: AWS Blu Age

  • Componente: Blusam

Si ve este error en los CloudWatch registros de Amazon de una aplicación de modernización de AWS mainframe que utiliza el motor AWS Blu Age y se ejecuta en un entorno con el patrón de alta disponibilidad, indica que otra aplicación está bloqueando un conjunto de datos compartido. Por lo general, esta situación se produce si la otra aplicación se bloquea o se produce un error y no libera el bloqueo.

Busque una aplicación defectuosa y compruebe si utiliza el mismo conjunto de datos mencionado en el mensaje de error. Compruebe si la aplicación se ejecuta en un entorno de tiempo de ejecución con el patrón de alta disponibilidad. La aplicación que ha generado la excepción de tiempo de espera no puede continuar y mostrará el estado Failed.

Causa común

La aplicación example-app-1 intenta bloquear un registro example-record-1 para una operación de escritura. Esta operación crea un bloqueo en el conjunto de datosexample-dataset-1, que es propietarioexample-record-1, y un bloqueo en example-record-1 sí mismo. Ahora, otra aplicación, example-app-2, intenta bloquear el mismo registro example-record-1. El conjunto de datos y el registro ya están bloqueados, por lo que example-app-2 espera a que se libere el bloqueo. Si example-app-1 falla, el conjunto de datos bloqueado example-dataset-1 sigue existiendo, lo que provoca que example-app-2 cancele su intento de escritura y se genere una excepción de tiempo de espera. Esta situación de bloqueo impide el acceso de todas las aplicaciones a example-dataset-1.

Resolución

Para resolver la situación de inmediato, puede forzar la liberación del bloqueo. Para evitar que ocurra una situación similar en el futuro, puede configurar dos parámetros que controlan el mecanismo de reparación automática de Blusam.

Forzar la liberación del bloqueo

El administrador de bloqueos Blusam utiliza Amazon ElastiCache (RedisOSS) para proporcionar bloqueos compartidos entre aplicaciones. Para liberar los bloqueos ElastiCache, utilice la utilidad Redis. CLI No puede eliminar bloqueos de registros individuales. Debe eliminar todos los bloqueos del conjunto de datos propietario. Realice los siguientes pasos:

  1. Conéctese a su ElastiCache mediante el siguiente comando:

    redis-cli -h hostname -p port

    Puede encontrar sus detalles ElastiCache en la ElastiCache consola en https://console.aws.amazon.com/elasticache/.

  2. Introduzca su contraseña.

  3. Introduzca el comando que desee ejecutar, de la siguiente manera:

    Comando Finalidad

    KEYS *

    Obtener todas las claves existentes.

    KEYS *YOUR_DATASET_NAME

    Obtener una clave de bloqueo de conjunto de datos.

    DEL THE_RETURNED_KEY

    Eliminar un bloqueo de conjunto de datos.

    FLUSHDB

    Limpiar todo el Redis.

    aviso

    Se perderán todos los datos de la memoria caché de Redis. Si el Redis se utiliza para otros fines, como gestionar sesiones http, puede que no desee utilizar FLUSHDB.

Configuración del mecanismo de reparación automática de Blusam

El administrador de bloqueos Blusam incluye un mecanismo de reparación automática para evitar bloqueos en los conjuntos de datos o registros. Puede ajustar los siguientes parámetros en la definición de la aplicación (application-main.yml) para configurar el mecanismo de reparación automática:

  • locksDeadTime: se refiere al tiempo máximo que una aplicación puede mantener un bloqueo. Cuando pasa este tiempo, el bloqueo se declara caducado y se libera inmediatamente. El valor locksDeadTime se expresa en milisegundos y el valor predeterminado es 1000.

  • locksCheck: define la estrategia de administrador de bloqueos de Blusam para comprobar los bloqueos. Todos los bloqueos de Blusam ElastiCache tienen una marca de tiempo y una fecha de caducidad. El valor del parámetro locksCheck determina si se eliminan los bloqueos caducados.

    • off: no se ejecuta ninguna comprobación en ningún momento. Se pueden producir puntos muertos. (No recomendado)

    • reboot: las comprobaciones se ejecutan cuando se inicia o se reinicia una instancia de aplicación de modernización de AWS mainframe que se ejecuta en un entorno de ejecución de modernización de AWS mainframe. Todos los bloqueos caducados se liberan inmediatamente. (predeterminado)

    • timeout: las comprobaciones se ejecutan cuando se inicia o reinicia una AWS instancia de aplicación de modernización de AWS mainframe que se ejecuta en un entorno de ejecución de modernización de mainframe, o cuando se agota el tiempo de espera durante un intento de bloquear un conjunto de datos. Los bloqueos caducados se liberan inmediatamente.

Para obtener más información sobre la definición de una aplicación de AWS Blu Age, consulte. AWS Ejemplo de definición de aplicación de Blu Age

Administrador de bloqueos de Blusam

En el contexto de un entorno de ejecución de modernización de AWS mainframe que utiliza el patrón de alta disponibilidad, una aplicación de AWS Blu Age puede implementarse varias veces. En el caso de las aplicaciones que gestionan conjuntos de datos de Blusam, pueden producirse problemas de acceso simultáneo. El administrador de bloqueos Blusam garantiza la integridad de los datos y gestiona el acceso de lectura y escritura a los registros y conjuntos de datos al proporcionar bloqueos compartidos entre las aplicaciones que utilizan. ElastiCache Este mecanismo permite que más de una aplicación lea el registro de manera concurrente y garantiza que solo una aplicación escriba el registro simultáneamente.

Bloqueos de escritura

Para actualizar o eliminar un registro específico, la aplicación debe bloquear primero el conjunto de datos propietario del registro y, a continuación, bloquear el propio registro. Cuando el registro está bloqueado, se libera el bloqueo del conjunto de datos y quedan disponibles para su uso otros registros del mismo conjunto de datos. Cuando se completa la operación de actualización o eliminación, se libera el bloqueo de registro retenido. Solo una aplicación a la vez puede actualizar el registro, lo que impide que otras aplicaciones lean o escriban hasta que se libere el bloqueo, si la política de aplicación definida permite esperar a que se libere.

Bloqueos de lectura

Mientras no se mantenga ningún bloqueo de escritura en el registro o el conjunto de datos, varias aplicaciones pueden leer los mismos registros al mismo tiempo. Para bloquear un registro para una operación de escritura, se deben liberar todos los bloqueos de lectura.

nota

El gestor de bloqueos de Blusam gestiona el acceso desde varios subprocesos de una aplicación determinada mediante el mismo mecanismo de bloqueo.