Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-10199

A retried putIfAbsent operation may not be distributed to peer and its client

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      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.

              if (getOwner().getConcurrencyChecksEnabled() &&
                  event.getOperation() == Operation.PUT_IF_ABSENT &&
                  !event.hasValidVersionTag() &&
                  event.isPossibleDuplicate()) {
                Object retainedValue = getRegionEntry().getValueRetain(getOwner());
      

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            eshu Eric Shu
            eshu Eric Shu
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment