Barry Oglesby created GEODE-4957:
------------------------------------

             Summary: The key used in a putIfAbsent call that returns null may 
not be the one in the RegionEntry
                 Key: GEODE-4957
                 URL: https://issues.apache.org/jira/browse/GEODE-4957
             Project: Geode
          Issue Type: Bug
          Components: regions
            Reporter: Barry Oglesby


With simultaneous putIfAbsent calls, sometimes the thread that returns null is 
not the thread that actually creates the RegionEntry.

Below is some logging that shows this behavior.

Thread-77 returns null from the putIfAbsent call (which means there was no 
previous value). 1 ms before Thread-77's putEntryIfAbsent call, Thread-9 
creates the RegionEntry. You can see that because not only is oldRe=null for 
Thread-9, but also the event's key (eventKey) and entry's key (reKey) are 
identical. But Thread-9 returns a non-null old value.
{noformat}
Thread-77 at 1522187267493: AbstractRegionMap.putEntryIfAbsent 
regionEntry=VersionedStatsDiskLRURegionEntryHeapObjectKey@6a8119a0 
(key=ComplexKey[identity=1682369152; key=key]; rawValue=REMOVED_PHASE1; 
version=\{v0; rv0; ds=0; time=0};member=null); 
oldRe=VersionedStatsDiskLRURegionEntryHeapObjectKey@1aac7604 
(key=ComplexKey[identity=342592289; key=key]; rawValue=REMOVED_PHASE1; 
version=\{v0; rv0; ds=0; time=0};member=null)
Thread-77 at 1522187267493: AbstractRegionMap.basicPut 
eventKey=ComplexKey[identity=1682369152; key=key]; 
reKey=ComplexKey[identity=342592289; key=key]
Thread-77 at 1522187267500: LocalRegion.putIfAbsent returning null
{noformat}
{noformat}
Thread-9 at 1522187267492: AbstractRegionMap.putEntryIfAbsent 
regionEntry=VersionedStatsDiskLRURegionEntryHeapObjectKey@1aac7604 
(key=ComplexKey[identity=342592289; key=key]; rawValue=REMOVED_PHASE1; 
version=\{v0; rv0; ds=0; time=0};member=null); oldRe=null
Thread-9 at 1522187267495: AbstractRegionMap.basicPut 
eventKey=ComplexKey[identity=342592289; key=key]; 
reKey=ComplexKey[identity=342592289; key=key]
Thread-9 at 1522187267504: LocalRegion.putIfAbsent returning v1
{noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to