Murillo Braga · May 13, 2020

Database size issue - Purge process missing some classes

Hello guys, 

I have used the Studio SOAP wizard to generate some webservice client classes and amongst those classes:

Class RMH.SOAP.s0.Output Extends (%Persistent, %XML.Adaptor) [ ProcedureBlock, SqlTableName = _Output ] {
Property Value As %GlobalCharacterStream(XMLNAME = "Value");

And the caller looks like

Class RMH.SOAP.SoapTreeSoap Extends %SOAP.WebClient [ ProcedureBlock ] {
Method Run...(Tree As %String, Inputs As %String, Debug As %Integer) As RMH.SOAP.s0.Output 

We do run a daily purge in all of our productions, but I noticed that some globals aren't being taken into consideration. The global related to the class above is occupying 8GB worth of data and its size isn't reduced after the daily purge take place (it uses the ensemble base class Ens.Util.Tasks.PurgeActivityData)

When I checked the global contents, I could definitely spot very old data... so that reinforces my assumption.

Could I make use of anything from the framework to solve this or should I develop custom classes for the purge process?

Any help is appreciated.

Many thanks!

4 1 3 150


Hey Murillo,

I'm not sure how the SOAP stuff you describe works into the standard Ensemble machinery, and understanding what globals/data are not being purged might be useful to provide further guidance. However, the purge you mention is intended for the activity monitor, and is not the main purge task which is just Ens.Util.Tasks.Purge. See the following docs:

Purging Production Data

Monitoring Activity Volume

Murillo opened a WRC case about this and we are working to purge the messages on his system. The PurgeActivityData task is not the task which purges Ensemble messages, as Vic noted.

Another aspect of this issue is that pre 2017.1 SOAP Wizard-generated messages do not have %OnDelete generated and any persistent properties are orphaned on delete. We will need to implement %OnDelete to make sure that persistent properties are cleaned up as well.