You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Eric Shu (Jira)" <ji...@apache.org> on 2022/03/30 17:46:00 UTC

[jira] [Created] (GEODE-10199) A retried putIfAbsent operation may not be distributed to peer and its client

Eric Shu created GEODE-10199:
--------------------------------

             Summary: A retried putIfAbsent operation may not be distributed to peer and its client
                 Key: GEODE-10199
                 URL: https://issues.apache.org/jira/browse/GEODE-10199
             Project: Geode
          Issue Type: Bug
          Components: regions
            Reporter: Eric Shu


In creating bucket regions, region event state from the current bucket hosts was sent to the node creating the bucket, and later the node with newly created bucket will request GII from one of the current host. There is a race that gii can send an entry but does not have the corresponding event state in the provider when sending the state.

If the node just created bucket received the retried putIfAbsent event, it will not find the event in its event tracker (has not seen the event), even though the entry exists in its cache, and it tries to find and set the version tag from other peers.

Later, due to the following condition check, the event will not be processed after this check and will not be distributed to peers.

{code:java}
        if (getOwner().getConcurrencyChecksEnabled() &&
            event.getOperation() == Operation.PUT_IF_ABSENT &&
            !event.hasValidVersionTag() &&
            event.isPossibleDuplicate()) {
          Object retainedValue = getRegionEntry().getValueRetain(getOwner());
{code}




--
This message was sent by Atlassian Jira
(v8.20.1#820001)