geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anilkumar Gingade (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (GEODE-2776) The version tag on client event is not updated when an entry is added to server using load operation.
Date Mon, 08 May 2017 21:11:04 GMT

     [ 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)

Mime
View raw message