[
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: [email protected]
For additional commands, e-mail: [email protected]