You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Owen Nichols (Jira)" <ji...@apache.org> on 2022/06/22 20:47:04 UTC

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

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

Owen Nichols closed GEODE-10199.
--------------------------------

> 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
>            Assignee: Eric Shu
>            Priority: Major
>              Labels: GeodeOperationAPI, blocks-1.15.0, pull-request-available
>             Fix For: 1.15.0
>
>
> 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.7#820007)