You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
gemstoneReap
"Iterate through the cache and remove objects that have expired.""In GemStone, this method is performed by a separate maintenance VM, so we are already in transaction (assumed to be running in #autoBegin transactionMode) and do not have to worry about acquiring the TransactionMutex. Since we are using reducedConflict dictionaries in the first place, we will remove the keys and values from the existing dictionaries without using the mutex."
| expiredcountplatform |
expired :=OrderedCollectionnew.
objectsByKey
associationsDo: [ :assoc |
(self expiryPolicy isExpiredUpdating: assoc value key: assoc key)
ifTrue: [
expired add: assoc ] ].
count :=0.
platform :=GRPlatform current.
expired
do: [ :assoc |
count := count +1.
selfnotifyRemoved: assoc value key: assoc key.
objectsByKey removeKey: assoc key.
keysByObject removeKey: assoc value ifAbsent: [ ].
count \\100==0ifTrue: [ platform doCommitTransaction ] ].
count ~~0ifTrue: [ platform doCommitTransaction ].
^ expired size
The text was updated successfully, but these errors were encountered:
Here's a link to the characterization of the bug and here's my proposed bugfixes.
WARcLastAccessExpiryPolicy>>isExpired:key:
WARcLastAccessExpiryPolicy>>isExpiredUpdating:key:
WACache>>gemstoneReap
The text was updated successfully, but these errors were encountered: