Bug 43758

GemStone/S 64 Bit

3.1.0.6, 3.1.0.5, 3.1.0.4, 3.1.0.3, 3.1.0.2, 3.1.0.1, 3.1, 3.0.1, 3.0, 2.4.5.1, 2.4.5, 2.4.4.8, 2.4.4.7, 2.4.4.6, 2.4.4.5, 2.4.4.4, 2.3.1.6, 2.2.5.4

All Platforms

3.2

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).

Workaround

Manually reset these values:

As a user with SystemControl and GarbageCollection privileges:

run

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