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

Eric Shu resolved GEODE-10199.
------------------------------
    Fix Version/s: 1.15.0
       Resolution: Fixed

> 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.1#820001)

Reply via email to