[ 
https://issues.apache.org/jira/browse/GEODE-9033?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Darrel Schneider updated GEODE-9033:
------------------------------------
    Affects Version/s: 1.1.0

> client read operations should not be blocked by a write operation
> -----------------------------------------------------------------
>
>                 Key: GEODE-9033
>                 URL: https://issues.apache.org/jira/browse/GEODE-9033
>             Project: Geode
>          Issue Type: Improvement
>          Components: client/server
>    Affects Versions: 1.1.0
>            Reporter: Darrel Schneider
>            Priority: Major
>
> Client read operations currently will be blocked by a write operation that is 
> in progress.
> This is caused by the write operation holding a synchronization on the 
> RegionEntry and LocalRegion.getDeserializedValue synchronizing the 
> RegionEntry with clientEvent is not null in order to atomically obtain both 
> the entry's value and version.
> The read code in LocalRegion that causes this is:
> {code:java}
>           synchronized (regionEntry) {
>             // value & version must be obtained atomically
>             
> clientEvent.setVersionTag(regionEntry.getVersionStamp().asVersionTag());
>             value = getDeserialized(regionEntry, updateStats, 
> disableCopyOnRead,
>                 preferCachedDeserializable, retainResult);
>           }
> {code}
> To fix this it may be possible to change the write operations to synchronize 
> on something else while changing both the value and version (but not while 
> doing anything else). Then the read code can sync on that new Object and not 
> the RegionEntry instance.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to