Artículo
· 10 hr atrás Lectura de 3 min

¿Por qué sigo viendo mensajes antiguos después de ejecutar la tarea de limpieza?

Para gestionar la acumulación de datos de producción, InterSystems IRIS permite a los usuarios controlar el tamaño de la base de datos purgando periódicamente los datos. Esta purga puede aplicarse a mensajes, registros, procesos de negocio y alertas gestionadas.

Consultad la documentación para obtener más detalles sobre la configuración de la tarea de purga:
https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=EGMG_purge#EGMG_purge_settings

Un problema con el que muchos usuarios se encuentran es seguir viendo mensajes antiguos después de ejecutar la tarea de purga de mensajes. Por ejemplo, un usuario tiene una tarea de purga con NumberOfDaysToKeep=45. Esto significa que se conservan los mensajes generados en los últimos 45 días y que los mensajes generados antes de ese periodo deberían eliminarse. Después de que la tarea de purga se complete correctamente, la mayoría de los mensajes anteriores al periodo de retención de 45 días se eliminan, pero todavía hay algunos mensajes antiguos creados antes de esos 45 días. ¿Por qué no se purgan esos mensajes?

En este artículo, hablaré sobre las causas más comunes y cómo manejar la situación. Asumiré que el usuario tiene una tarea de purga que usa Ens.Util.Tasks.Purge.

1) Comprobad la tarea de purga

Primero, debemos revisar la configuración de la tarea de purga. Queremos confirmar el valor de NumberOfDaysToKeep y asegurarnos de que la tarea esté configurada para purgar los mensajes en el espacio de nombres que estamos examinando, pero el ajuste más importante que debemos comprobar es KeepIntegrity.

 

Si KeepIntegrity está activado, la tarea de purga solo eliminará las sesiones completas. Por definición, una sesión completa contiene únicamente mensajes con el estado Complete, Error, Aborted o Discarded. Ten en cuenta que si algún mensaje de la sesión no tiene uno de estos cuatro estados (por ejemplo, si el mensaje está en estado Queued o Suspended), todos los mensajes de esa sesión no serán purgados.

2) Comprobad el estado de los mensajes en esa sesión

Sabiendo que KeepIntegrity puede hacer que la tarea de purga omita algunos mensajes en sesiones incompletas, ahora podemos comprobar si este es el problema actual revisando el estado de los mensajes de la sesión. En el Visor de Mensajes, buscad los mensajes que deberían haberse eliminado según el criterio de NumberOfDaysToKeep aplicando el filtro de tiempo. Comprobad el estado de todos los mensajes de una de estas sesiones utilizando el ID de sesión. ¿Hay algún mensaje con un estado diferente de Complete, Error, Aborted o Discarded?

Además del Visor de Mensajes, podéis verificar esta información utilizando SQL consultando la tabla Ens.MessageHeader.

3) Gestionad las sesiones incompletas

Para resolver el problema, necesitáis cambiar el estado de estos mensajes para que puedan ser purgados. Por ejemplo, algunos mensajes podrían seguir en una cola y necesitar ser abortados.

Otra forma de resolverlo es crear una tarea de purga con KeepIntegrity desactivado para eliminar los mensajes incluso si las sesiones están incompletas. Debéis elegir un valor adecuado para NumberOfDaysToKeep.

Comentarios (0)1
Inicie sesión o regístrese para continuar