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

Paulo Motta edited comment on CASSANDRA-13327 at 3/29/17 5:29 PM:
------------------------------------------------------------------

I'm a bit confused here, did CAS unavailable happened while 127.0.0.4 was being 
replaced, or did 127.0.0.5 remained in JOINING/replacing state after replace 
was finished?

If the former, than this is expected behavior I guess? Because you had 3 normal 
endpoints (where 1 was down) and 2 pending endpoints (the bootstrapping and the 
replacing node) for the requested key so the CAS should not allowed due to 
CASSANDRA-8346.

If the latter than this is a bug with replace and must be fixed since the node 
must bump to NORMAL state after replacement is completed and the CAS should 
succeed. Can you reproduce this easily or have logs to understand why the 
replacement node did not go into NORMAL state after replacement was finished?


was (Author: pauloricardomg):
I'm a bit confused here, did CAS unavailable happened while 127.0.0.5 was being 
replaced, or did 127.0.0.5 remained in JOINING/replacing state after replace 
was finished?

If the former, than this is expected behavior I guess? Because you had 3 normal 
endpoints (where 1 was down) and 2 pending endpoints (the bootstrapping and the 
replacing node) for the requested key so the CAS should not allowed due to 
CASSANDRA-8346.

If the latter than this is a bug with replace and must be fixed since the node 
must bump to NORMAL state after replacement is completed and the CAS should 
succeed. Can you reproduce this easily or have logs to understand why the 
replacement node did not go into NORMAL state after replacement was finished?

> Pending endpoints size check for CAS doesn't play nicely with 
> writes-on-replacement
> -----------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-13327
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13327
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Coordination
>            Reporter: Ariel Weisberg
>            Assignee: Ariel Weisberg
>
> Consider this ring:
> 127.0.0.1  MR UP     JOINING -7301836195843364181
> 127.0.0.2    MR UP     NORMAL -7263405479023135948
> 127.0.0.3    MR UP     NORMAL -7205759403792793599
> 127.0.0.4   MR DOWN     NORMAL -7148113328562451251
> where 127.0.0.1 was bootstrapping for cluster expansion. Note that, due to 
> the failure of 127.0.0.4, 127.0.0.1 was stuck trying to stream from it and 
> making no progress.
> Then the down node was replaced so we had:
> 127.0.0.1  MR UP     JOINING -7301836195843364181
> 127.0.0.2    MR UP     NORMAL -7263405479023135948
> 127.0.0.3    MR UP     NORMAL -7205759403792793599
> 127.0.0.5   MR UP     JOINING -7148113328562451251
> It’s confusing in the ring - the first JOINING is a genuine bootstrap, the 
> second is a replacement. We now had CAS unavailables (but no non-CAS 
> unvailables). I think it’s because the pending endpoints check thinks that 
> 127.0.0.5 is gaining a range when it’s just replacing.
> The workaround is to kill the stuck JOINING node, but Cassandra shouldn’t 
> unnecessarily fail these requests.
> It also appears like required participants is bumped by 1 during a host 
> replacement so if the replacing host fails you will get unavailables and 
> timeouts.
> This is related to the check added in CASSANDRA-8346



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to