Anilkumar Gingade created GEODE-2776:
----------------------------------------

             Summary: 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


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)

Reply via email to