Anilkumar Gingade created GEODE-5733:
----------------------------------------
Summary: Region size could be wrong when there is failure during
GII
Key: GEODE-5733
URL: https://issues.apache.org/jira/browse/GEODE-5733
Project: Geode
Issue Type: Improvement
Components: regions
Reporter: Anilkumar Gingade
The region size is calculated using size of underlying map and tombstone count:
size = map.size() - tombstone.
The increment and decrement op on map and tombstone (creation) are non-atomic;
which could result in region size reporting incorrectly.
One of the scenario:
-- Thread-1 is creating region; it sends region profile starts sends initial
image request.
-- Meanwhile Thread-2 does a destroy (replicated message); its not yet
incremented the Tombstone count.
-- Thread-1 fails to do GII; as a result of this. It clears the entries from
the region.
-- Now Thread-2 increments the tombstone count. Which corrupts the state.
The probable fix could be to make the “getSizeGuard()” on local region used by
size() and clear() to use read-write lock. The tombstone creation uses read
lock; clear() and size() will use write lock.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)