You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Anthony Baker (JIRA)" <ji...@apache.org> on 2017/06/17 18:04:20 UTC

[jira] [Closed] (GEODE-2776) The version tag on client event is not updated when an entry is added to server using load operation.

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

Anthony Baker closed GEODE-2776.
--------------------------------

> 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.4.14#64029)