[
https://issues.apache.org/jira/browse/GEODE-10199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Shu updated GEODE-10199:
-----------------------------
Labels: GeodeOperationAPI (was: needsTriage)
> 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
>
> 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)