Bruce Schuchardt created GEODE-5520:
---------------------------------------

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


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