Uso de secuencias de registro con KTM

Los sistemas de procesamiento de transacciones (TPS) basados en KTM deben registrar la actividad de transacción mediante el Sistema de archivos de registro común (CLFS). KTM crea un flujo de registro para cada objeto del administrador de transacciones. Cada administrador de recursos debe crear su propia secuencia de registro.

Creación de flujos de registro para objetos del Administrador de transacciones

Cuando el administrador de recursos llama a ZwCreateTransactionManager, debe especificar el nombre de una secuencia de registro clFS. Si la secuencia especificada no existe, KTM la crea. Si la secuencia ya existe, ZwCreateTransactionManager vuelve a abrirla. KTM asigna este flujo de registro al objeto del administrador de transacciones.

KTM usa el flujo de registro del objeto del administrador de transacciones para registrar información de estado interno sobre el objeto del administrador de transacciones y todos los objetos de administrador de recursos, objetos de transacción y objetos de inscripción asociados al objeto del administrador de transacciones. Si se interrumpen las operaciones transaccionales antes de que se completen, KTM puede usar la información del registro para determinar si se deben confirmar o revertir las transacciones.

KTM no registra los datos de transacción que los administradores de recursos reciben o envían a los clientes. Los administradores de recursos deben usar sus propios flujos de registro para registrar esta información.

Los administradores de recursos pueden llamar a ZwQueryInformationTransactionManager para obtener información sobre la secuencia de registro de un objeto de administrador de transacciones, como el nombre de la ruta de acceso del flujo de registro o el GUID que KTM asigna a la secuencia.

Creación de flujos de registro para administradores de recursos

En su código de inicialización, cada administrador de recursos debe llamar a ClfsCreateLogFile para crear su propio flujo de registro. Cada administrador de recursos debe usar su flujo para registrar toda la información sobre las transacciones que requiere para confirmar, revertir o recuperar los datos de la transacción.

KTM y todos los administradores de recursos de un TPS pueden usar un único archivo de registro, pero cada componente de TPS debe usar una secuencia diferente dentro del archivo de registro. Para obtener información sobre cómo especificar secuencias individuales dentro de un archivo de registro, vea ClfsCreateLogFile.

Periódicamente, KTM crea un área de reinicio en el flujo de registro del administrador de transacciones. Cuando KTM realiza una operación de recuperación, lee el último área de reinicio para recuperar el estado de los objetos abiertos antes de apagar el sistema. Del mismo modo, el administrador de recursos debe crear periódicamente áreas de reinicio en su flujo de registro. Por ejemplo, el administrador de recursos podría crear un área de reinicio cada vez que se completa una operación transaccional.

Para obtener más información sobre las áreas de reinicio en los flujos de registro de CLFS, consulte Lectura de registros de reinicio desde un flujo CLFS. Consulte también las rutinas ClfsWriteRestartArea, ClfsReadRestartArea y ClfsReadPreviousRestartArea .

Uso de secuencias de registro para la recuperación

Después de que el administrador de recursos llame a ZwCreateTransactionManager, debe llamar a ZwRecoverTransactionManager. La rutina ZwRecoverTransactionManager lee el flujo de registro del objeto del administrador de transacciones para recuperar el estado del TPS a un punto correcto conocido. Si el equipo se apaga correctamente (o no se cerró) después de cargar por última vez el administrador de recursos, la secuencia de registro contiene información mínima. Si se ha producido un bloqueo del sistema, el flujo de registro contiene suficiente información de recuperación para restaurar todas las transacciones a un estado conocido.

Después de que el administrador de recursos llame a ZwCreateResourceManager, debe llamar a ZwRecoverResourceManager. La rutina ZwRecoverResourceManager intenta recuperar las transacciones asociadas a cada una de las inscripciones del administrador de recursos. Para obtener más información sobre cómo recuperar las transacciones de un administrador de recursos, consulte Control de operaciones de recuperación.

Almacenar datos de transacción

Los administradores de recursos que usan flujos de registro clFS deben almacenar datos de transacción en áreas de serialización de CLFS. CLFS mueve periódicamente los datos del área de serialización del flujo de registro a un medio de almacenamiento permanente. Para registrar una operación que modifica los datos, un administrador de recursos podría hacer lo siguiente:

  1. Copie los datos originales, antes de que la operación de escritura la modifique, en el área de serialización.

  2. Realice la operación en una copia de los datos sin modificar el medio de almacenamiento permanente de la base de datos.

  3. Copie los nuevos datos en el área de serialización.

Si el administrador de recursos recibe una notificación de reversión, puede restaurar los datos originales de la secuencia de registro. Si recibe una notificación de confirmación, el administrador de recursos puede copiar los datos modificados de la secuencia de registro al medio de almacenamiento permanente de la base de datos.

Los administradores de recursos también pueden usar la rutina ZwSetInformationEnlistment para almacenar información de recuperación en un objeto de inscripción. KTM guarda esta información en su flujo de registro y la lee de la secuencia de registro durante las operaciones de recuperación. Por lo tanto, un administrador de recursos puede obtener esta información de recuperación en cualquier momento llamando a ZwQueryInformationEnlistment.