Bug 43758

GemStone/S 64 Bit,,,,,, 3.1, 3.0.1, 3.0,, 2.4.5,,,,,,,

All Platforms


Interrupting reclaimAll/objectAudit can leave CR backlog setting / GC config options incorrect

Repository>>reclaimAll reconfigures the stone configuration option StnSignalAbortCrBacklog
to 3 and restores it to its original value when finished.  But if reclaimAll
is interrupted (the session is killed or an unexpected signal/error occurs
and it is not allowed to complete)  StnSignalAbortCrBacklog will be left
at 3, causing major changes in the frequency of sigAbort/lostOT signals
on the system.

In addition, reclaimAll also sets the following GcUser configuration options:

reclaimMinPages = 1

reclaimSleepTime = 1

sleepTimeBetweenReclaimMs =  0

These *must* be reset by executing Repository>>postReclaimAll: with the
arguments returned by the reclaimAll:.  If  reclaimAll is interrupted and
postReclaimAll: is not executed, these GC configuration options will be
left at these settings.  This may cause changes in the behavior of reclaim
activity on the system.

Note that Repository>>objectAudit / Repository>>auditWithLimit: internally
calls reclaimAll, and will therefore be subject to this bug as well (fixed
in 3.0 during a redesign of objectAudit).


Manually reset these values:

As a user with SystemControl and GarbageCollection privileges:


System stoneConfigurationAt: #StnSignalAbortCrBacklog put: <original-value>.

SystemRepository _setGcConfigAt: #reclaimMinPages put: <original-value>

SystemRepository _setGcConfigAt: #reclaimSleepTime put: <original-value>.

SystemRepository _setGcConfigAt: #sleepTimeBetweenReclaimMs put: <original-value>.


Last updated: 2/7/14