You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2022/03/09 21:51:00 UTC

[jira] [Commented] (GEODE-10108) Duplicate Ops During GII/Delta Updates

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

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

Commit 09cd1927a9fe047b222f05075db5247301736710 in geode's branch refs/heads/develop from Jens Deppe
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=09cd192 ]

GEODE-10108: Add version field to AbstractRedisData and deltas (#7429)

This change is necessary because GII can retrieve a value that is
currently being updated. This can result in corruption if a Delta change
is subsequently applied.

- Convert DeltaInfo to an abstract class and add a version field
- DeltaTypes indicate whether the type is versioned
- Versioning needs to be added to any operations where the application
  of a Delta is not idempotent. In such cases, the version and data
  change MUST happen under synchronization.
- Update the String APPEND command to use these changes
- Other commands will be updated separately.
- For subsequent use of versioning, take care that the version is not
  inadvertently updated as a result of applying a delta change.

> Duplicate Ops During GII/Delta Updates 
> ---------------------------------------
>
>                 Key: GEODE-10108
>                 URL: https://issues.apache.org/jira/browse/GEODE-10108
>             Project: Geode
>          Issue Type: Bug
>          Components: redis
>            Reporter: Wayne
>            Assignee: Jens Deppe
>            Priority: Major
>              Labels: blocks-1.15.0​, pull-request-available
>
> When Redis commands are ongoing and a server that was previously not hosting a bucket becomes the host of the primary bucket for a key, there exists a time window where that server is performing GII but also receiving delta updates from the previous primary bucket. This can lead to the delta being applied to a data structure that is already in the “correct” state, resulting in the command being applied twice. This can result in duplicated appends, increments/decrements, and in the case of LTRIP and RPOP especially, IndexOutOfBoundsException on the member applying the delta, as the index to which the delta refers has already been removed.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)