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

Benedict commented on CASSANDRA-14406:
--------------------------------------

My review for this is in progress alongside all of the other transient 
replication reviews, so I will report here as I find noteworthy things to 
discuss.

First and most importantly, I'm concerned about pending ranges and transient 
replicas.  It's not clear to me that ignoring transient replicas for pending 
ranges is acceptable.  I'm not sufficiently clued up on the order of ceremony 
for range movements, but it seems likely that when a transient range is moved, 
there will be a period of time where both transient replicas would need to 
receive any write intended for the logical transient replica.  If only the 
current one receives it, then after the movement takes effect a read quorum may 
return a bad response.

StorageProxy.mutate looks to have had a bug around maybeTryAdditionalReplicas 
and counters when a node was marked down.  In this case it would have tried to 
perform a regular write to the down nodes.  [I have pushed a 
fix|https://github.com/belliottsmith/cassandra/commit/9e74e1dd1f2f69f0c0117c4f94f79da9d5b6fe8f].

StorageProxy.mutate also unnecessarily allocated a HashMap, that it only used 
for pair-wise iteration.  In fact, by requiring a list to be furnished to the 
method, we could simply collect a new list of the response handlers, and 
iterate them both by index.  Since all callers already did construct a list, 
this just involved propagating some type parameter changes.  [I have pushed a 
refactor to the 
method|https://github.com/belliottsmith/cassandra/commit/4860cc0be054bfedf31220a2c87ff90fa3f16648]

> Transient Replication: Implement cheap quorum write optimizations
> -----------------------------------------------------------------
>
>                 Key: CASSANDRA-14406
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14406
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: Coordination
>            Reporter: Ariel Weisberg
>            Assignee: Blake Eggleston
>            Priority: Major
>
> Writes should never be sent to transient replicas unless necessary to satisfy 
> the requested consistency level. Such as RF not being sufficient for strong 
> consistency or not enough full replicas marked as alive.
> If a write doesn't receive sufficient responses in time additional replicas 
> should be sent the write similar to Rapid Read Protection.
> Hints should never be written for a transient replica.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to