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

Ariel Weisberg commented on CASSANDRA-14759:
--------------------------------------------

I think I understand this. It's fixing a deficiency in write availability where 
transient -> full would cause that replica to be unavailable for meeting write 
quorum requirements. Since it would remain present in pending it would also 
increase group size in blockFor.

{code}
return natural.filter(r -> !r.isTransient() || !pending.contains(r.endpoint(), 
true));
{code}

Specifically the {{!pending.contains(r.endpoint(), true)}} (use of an enum 
instead of true/false might be a hair easier to follow for that API) causes it 
to no longer appear in natural and in pending instead.

Once you have the tests I'll do a final review.

> Transient->Full movements mishandle consistency level upgrade
> -------------------------------------------------------------
>
>                 Key: CASSANDRA-14759
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14759
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Benedict
>            Assignee: Benedict
>            Priority: Major
>              Labels: Availability, correctness, transient-replication
>             Fix For: 4.0
>
>
> While we need treat a transitioning node as ‘full’ for writes, so that it can 
> safely begin serving full data requests once it has finished, we cannot 
> maintain it in the ‘pending’ collection else we will also increase our 
> consistency requirements by a node that doesn’t exist.



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

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

Reply via email to