Eric Shu created GEODE-10199:
--------------------------------
Summary: 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
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)