Bug: 15391

Impact:

Product:
GemEnterprise

Versions:
2.0, 1.1

Platform:
All

Fixed In:

Production applications need to occasionally "clean up" persistent dirty set

In GemEnterprise, an RcIdentityBag is used as a persistent dirty set
for modified primary objects.  During a 'refresh' operation, the
dirty set is emptied.  However, for RcIdentityBags, the removeAll:
operation does not actually empty subcomponent 'add' bags.   Instead,
it adds the elements to the subcomponent 'removal' bags.  Over time,
as sessions are modifying primary objects, and the remote object
space is refreshing, the subcomponent 'removal' bags continue to grow.
Even though the persistent dirty set is logically getting emptied,
the RcIdentityBag itself is actually growing.  For production
applications, the persistent dirty set needs to be occasionally
'cleaned up' to keep subcomponent bags at a reasonable size.

Workaround:

Use the following code in your application to perform the necessary
cleanup:

aRemObjSp executeStringNoSync:
  'GemStoneFederation _sessionState localObjectSpace dirtyObjects cleanupBag'