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