Artigo
· 18 hr atrás 3min de leitura

Por que ainda vejo mensagens antigas depois de executar a tarefa de limpeza?

Para gerenciar o acúmulo de dados de produção, o InterSystems IRIS permite aos usuários controlar o tamanho do banco de dados eliminando (expurgando) periodicamente os dados. Esta purga pode ser aplicada a mensagens, registros, processos de negócio e alertas gerenciados.

Consulte a documentação para obter mais detalhes sobre a configuração da tarefa de expurgo:

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=EGMG_purge#EGMG_purge_settings

Um problema com o qual muitos usuários se deparam é continuar vendo mensagens antigas depois de executar a tarefa de purga de mensagens. Por exemplo, um usuário tem uma tarefa de expurgo com NumberOfDaysToKeep=45. Isso significa que as mensagens geradas nos últimos 45 dias são mantidas e que as mensagens geradas antes desse período deveriam ser eliminadas. Depois que a tarefa de purga é concluída corretamente, a maioria das mensagens anteriores ao período de retenção de 45 dias são eliminadas, mas ainda há algumas mensagens antigas criadas antes desses 45 dias. Por que essas mensagens não são eliminadas?

Neste artigo, falarei sobre as causas mais comuns e como lidar com a situação. Assumirei que o usuário tem uma tarefa de expurgo que usa Ens.Util.Tasks.Purge.

1) Verifique a Tarefa de Exurgo

Primeiro, devemos revisar a configuração da tarefa de expurgo. Queremos confirmar o valor de NumberOfDaysToKeep e garantir que a tarefa esteja configurada para expurgar as mensagens no namespace que estamos examinando. No entanto, a configuração mais importante que devemos verificar é KeepIntegrity (Manter Integridade).

 

Se o KeepIntegrity estiver ativado, a tarefa de expurgo só eliminará as sessões completas. Por definição, uma sessão completa contém unicamente mensagens com o estado: Complete (Concluído), Error (Erro), Aborted (Abortado) ou Discarded (Descartado).  Se alguma mensagem da sessão não tiver um destes quatro estados (por exemplo, se a mensagem estiver no estado Queued (Em Fila) ou Suspended (Suspenso)), nenhuma  das mensagens dessa sessão será eliminada.

2) Verifique o Estado das Mensagens Nessa Sessão

Sabendo que KeepIntegrity pode fazer com que a tarefa de expurgo omita algumas mensagens em sessões incompletas, agora podemos verificar se este é o problema atual, revisando o estado das mensagens da sessão.

No Visualizador de Mensagens (Message Viewer), procure as mensagens que deveriam ter sido eliminadas de acordo com o critério de NumberOfDaysToKeep, aplicando o filtro de tempo. Verifique o estado de todas as mensagens de uma destas sessões usando o ID de Sessão (Session ID). Há alguma mensagem com um estado diferente de Complete, Error, Aborted ou Discarded?

Além do Visualizador de Mensagens, você pode verificar esta informação utilizando SQL ao consultar a tabela Ens.MessageHeader.

3) Gerencie as Sessões Incompletas

Para resolver o problema, você precisa alterar o estado dessas mensagens para que possam ser eliminadas. Por exemplo, algumas mensagens podem continuar em uma fila e precisar ser abortadas.

Outra forma de resolver isso é criar uma tarefa de expurgo com KeepIntegrity desativado para eliminar as mensagens, mesmo que as sessões estejam incompletas. Você deve escolher um valor adequado para NumberOfDaysToKeep.

Discussão (0)1
Entre ou crie uma conta para continuar