You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Ariel Weisberg (JIRA)" <ji...@apache.org> on 2018/09/25 21:55:00 UTC

[jira] [Comment Edited] (CASSANDRA-14725) calculatePendingRanges does not handle full<->transient transition implied by add/remove another node

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

Ariel Weisberg edited comment on CASSANDRA-14725 at 9/25/18 9:54 PM:
---------------------------------------------------------------------

We at least need a regression test for what this fixes. Especially because I don't think this does what it aims to do yet. 

[This is calling get() by range on a collection keyed on endpoint|https://github.com/belliottsmith/cassandra/commit/99796da2117b2d4f29f1d08e93badb81994e12b9#diff-b9ead760fa9628889810dd64e6507d9cR882]. Curse java.util.Map's lack of type checking on get!

[I think this comment may be wrong?|https://github.com/belliottsmith/cassandra/commit/99796da2117b2d4f29f1d08e93badb81994e12b9#diff-b9ead760fa9628889810dd64e6507d9cR875]

Take a ring with 3/1 and four tokens, remove one token. This will trigger a null -> full and transient -> full transition I think. It can't produce full -> transient or full -> null though because we are forcing more nodes to replicate more data and not taking data away from any node.

Similarly when adding a node we create transitions from a more replicated state to a less replicated state and we have to impact two other nodes. There will be a full or transient to null transition and a full -> transient transition I think. [So this comment seems off.|https://github.com/belliottsmith/cassandra/commit/99796da2117b2d4f29f1d08e93badb81994e12b9#diff-b9ead760fa9628889810dd64e6507d9cR900]


was (Author: aweisberg):
We at least need a regression test for what this fixes. Especially because I don't think this does what it aims to do yet. 

[This is calling get() by range on a collection keyed on endpoint|https://github.com/belliottsmith/cassandra/commit/99796da2117b2d4f29f1d08e93badb81994e12b9#diff-b9ead760fa9628889810dd64e6507d9cR882]. Curse java.util.Map's lack of type checking on get!

 

[I think this comment may be wrong?|https://github.com/belliottsmith/cassandra/commit/99796da2117b2d4f29f1d08e93badb81994e12b9#diff-b9ead760fa9628889810dd64e6507d9cR875]

Take a ring with 3/1 and four tokens, remove one token. This will trigger a null -> full and transient -> full transition I think. It can't produce full -> transient or full -> null though because we are forcing more nodes to replicate more data and not taking data away from any node.

Similarly when adding a node we create transitions from a more replicated state to a less replicated state and we have to impact two other nodes. There will be a full or transient to null transition and a full -> transient transition I think. [So this comment seems off.|https://github.com/belliottsmith/cassandra/commit/99796da2117b2d4f29f1d08e93badb81994e12b9#diff-b9ead760fa9628889810dd64e6507d9cR900]

> calculatePendingRanges does not handle full<->transient transition implied by add/remove another node
> -----------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-14725
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14725
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Benedict
>            Assignee: Benedict
>            Priority: Major
>              Labels: correctness, transient-replication
>             Fix For: 4.0
>
>
> We only implemented handling those implied directly by a node changing its own status, but a node entering or leaving the ring can imply such a movement on another node, and these need to be handled.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org