Pergunta
Guilherme Koerber · Set. 9

Purge padrão não apaga as Streams

Olá comunidade!

Estou enfrentando um problema de crescimento da base, que está sendo gerado por um processo e por uma característica do Ensemble.

Ao executar o processo de limpeza das filas de mensagens o Ensemble “preserva” as Streams que fizeram parte dessas mensagens apagando somente o Header e Body. Desta forma a base de dados (de um dos namespaces) tem crescido cerca de 60GB por dia, o que vem estourando a capacidade do disco.

A InterSystems informou que isso se trata de uma característica e que está explicado nos documentos abaixo mencionados.

https://community.intersystems.com/post/ensemble-orphaned-messages

E também nesta parte da documentação: https://cedocs.intersystems.com/ens201812/csp/docbook/DocBook.UI.Page.cl...

Penso que o procedimento é implementar a remoção desses objetos tipo stream no método %OnDelete() da classe referente a essa mensagem, porém a complexidade dessa mensagem faz com que essa propriedade específica não seja alcançada pelo purge padrão. A stream não é exatamente o que tem no conteúdo, pois dentro dele você pode ter campos do tipo Stream, GlobalCharacterStream, etc.

São esses campos que ele não apaga e ele deveria apagar. Pelo que entendi os dados ficam dentro de uma global chamada ^CacheStream e de lá elas nunca são apagadas.

Com isso estou tendo dificuldades em saber o que tem dentro dela, o que é de cada interface e o que ainda está sendo usado. Tendo em vista que ela não tem ligação direta com as classes de Stream.

Alguém já teve um problema assim que possa me auxiliar?

Desde já agradeço,

Guilherme Koerber.

Product version: Ensemble 2018.1
10
1 0 3 32
Log in or sign up to continue

Olá Guilherme,

Na sua classe de mensagens você possui uma propriedade que aponta a outro objeto que possui stream ou a propriedade já é stream?

Pergunto pois já tive essa situação diversas vezes e resolvemos isso com uma mudança na classe de mensagens para não mais referenciar outros objetos.

Djeniffer,

De fato, esta apontado para um objeto. Irei tentar adaptar a classe para não referenciar mais objetos.

Obrigado pela sugestão!  =D

Olá Guilherme,

Exato, o que fizemos aqui em algumas integrações foi converter o XML em uma FileCharacterStream e quando é necessário usar este objeto fazemos o correlate dele diretamente na BO, ai só existe o tráfego dessas streams e não  mais dos objetos externos que dificultam o processo de limpeza.

Se precisar de alguma ajuda me informe.