[ 
https://issues.apache.org/jira/browse/GEODE-10199?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17516076#comment-17516076
 ] 

ASF subversion and git services commented on GEODE-10199:
---------------------------------------------------------

Commit b5e710e779ddb2837e58be85710c1fd00a9cf778 in geode's branch 
refs/heads/develop from Eric Shu
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=b5e710e ]

GEODE-10199: Make retried putIfAbsent work (#7520)

* Allow a retried putIfAbsend operation to proceed futher so that the
   operation can be distributed to other peers in basicPutPart2 and
   dispatch the event to their clients, even if the event has set the
   valid version tag already.

> 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