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

ASF GitHub Bot updated GEODE-5520:
----------------------------------
    Labels: pull-request-available  (was: )

> Inconsistency created by delta-propagation interaction with concurrency 
> control
> -------------------------------------------------------------------------------
>
>                 Key: GEODE-5520
>                 URL: https://issues.apache.org/jira/browse/GEODE-5520
>             Project: Geode
>          Issue Type: Bug
>          Components: client/server, messaging, regions, serialization
>            Reporter: Bruce Schuchardt
>            Assignee: Bruce Schuchardt
>            Priority: Major
>              Labels: pull-request-available
>
> I tracked a cache inconsistency down to a delta propagation operation that 
> failed over from one server to another and then failed to apply the delta on 
> the new server.
> When the full value is sent from the client the message is not marked as a 
> possible-duplicate.  Because it was missing this flag the server did not try 
> to recover a concurrency version tag for the operation but instead generated 
> a new version.
> When this server propagated the operation to another server it was rejected 
> by that server because it had already processed the operation from the 
> client's original attempt.  It recognized this by way of the operation's 
> EventID being recorded in its EventTracker.
> This resulted in one server having version X and the other having version X+1 
> for the entry.
> The client then destroyed the same entry with the same server, generating 
> version X+1 in that server.  When the server propagated the operation the 
> other server already had X+1 and threw a 
> ConcurrentCacheModificationException.  The result was one server having a 
> tombstone for the entry and the other having the value from the 
> delta-propagation operation.
> This can be fixed by setting the possible-duplicate flag on the message from 
> the client that contains the full value.  The server will then search for a 
> concurrency version tag and use it instead of generating a new one.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to