[
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)