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)