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)

Reply via email to