Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
For the purposes of rebalancing, geode keeps track of the amount of data stored on disk in a counter - BucketRegion.numOverflowBytesOnDisk.
For regions that have overflow but not persistence, a put that replaces a value that was overflowed on disk does not correctly decrement the counter of bytes overflowed to disk.
The issue is that that size of the entry on disk is read in an if block testing to see if the region is persistent (dr.isBackup())
if (dr.isBackup()) { dr.testIsRecoveredAndClear(did); // fixes bug 41409 oldValueLength = getValueLength(did);
Later it is used to change the stat, but it oldValueLength may not be set
incrementBucketStats(region, 1/*InVM*/, -1/*OnDisk*/, -oldValueLength);
The net effect of this issue is that if a lot of puts happen to entries that are overflowed to disk, the size of the bucket will be inflated. This may then cause issues with rebalancing calculations.