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

Anilkumar Gingade resolved GEODE-2776.
--------------------------------------
    Resolution: Fixed

> 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
>             Fix For: 1.2.0
>
>
> 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