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

Reply via email to