[ https://issues.apache.org/jira/browse/GEODE-2776?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Anilkumar Gingade reassigned GEODE-2776: ---------------------------------------- Assignee: Anilkumar Gingade > The version tag on client event is not updated when an entry is added to > server using load operation. > ----------------------------------------------------------------------------------------------------- > > Key: GEODE-2776 > URL: https://issues.apache.org/jira/browse/GEODE-2776 > Project: Geode > Issue Type: Bug > Components: regions > Reporter: Anilkumar Gingade > Assignee: Anilkumar Gingade > > When client does a get() which results in adding an entry by calling loader > on server side, the client event returned back is not updated with the > version tag that is created with the new entry on server. This results in > client having a different version tag than the server side entry. If client > has registered event, and is concurrently updating the entry (from get() call > and an register-event from server), it could result in data consistency > between client and server. > Scenario 1: > On Server invalidate happens, and the event is added to client queue. > Client does get() > On Server, the get() triggers load + put on server. And the response is sent > back. > Client gets the result from get() (which is newer) and applies to its cache. > Client gets invalid event (older than get), and it applies the event to the > cache (this is supposed to be conflated, but due to this bug its not > conflated). > At the end server has valid entry in the cache but client has invalid entry. > On Server: INVALID (First), Get(From Client, LOAD+PUT) (later) > On Client: GET(), PUT using Get Response(), INVALID (old) > Scenario 2: > Client does get() > On Server, the get() triggers load + put on server. And the response is sent > back. > On Server invalidate happens, and the event is added to client queue. > Client gets invalid event, and it applies the event to the cache. > Client gets the result from get() (which is older than invalidate) and > applies to its cache (this is supposed to be conflated, but due to this bug > its not conflated). > At the end server has invalid entry in the cache but client has valid entry > (old value). > On Server: Get(From Client, LOAD+PUT), INVALID (later) > On Client: GET() (new), INVALID (old), PUT using Get Response(). -- This message was sent by Atlassian JIRA (v6.3.15#6346)