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

Runtian Liu commented on CASSANDRA-18935:
-----------------------------------------

[~smiklosovic] Does this mean after this change, if a cluster has multiple 
nodes binary disabled for some reason, for certain partitions, the counter 
update will always get UnavailableException because all the replica nodes are 
not "RPC_READY"? Why counter update needs to bind with native transport enabled?

Also, it is mentioned in https://issues.apache.org/jira/browse/CASSANDRA-13043, 
"if a cluster have a setup with dedicated coordinator nodes, in which storage 
nodes don't even bother listening to clients, and have that disabled" counter 
update will always fail.

Quote: " it sounds like the problem we have is that we move endpoints from 
'pending' to 'natural' endpoints too quickly after bootstrap, before the node 
is actually fully ready, and that this is what we should be fixing"

 

With all above being said, I think it's better to
 # set the RPC_READY to true when enable native transport. (This is already 
done in the merge PR)
 # Do not set RPC_READY to false if we are using nodetool to shutdown native 
transport. We just set the value to false when the node is decommissioned and 
drained. (This is added in this PR)

Thoughts?

 

> Fix nodetool enable/disablebinary to correctly set rpc
> ------------------------------------------------------
>
>                 Key: CASSANDRA-18935
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18935
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Legacy/Core, Legacy/CQL
>            Reporter: Cameron Zemek
>            Assignee: Stefan Miklosovic
>            Priority: Normal
>             Fix For: 3.0.30, 3.11.17, 4.0.12, 4.1.4, 5.0-alpha2, 5.0, 5.1
>
>         Attachments: 18935-3.11.patch
>
>          Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
>  
> {code:java}
>         if ((nativeFlag != null && Boolean.parseBoolean(nativeFlag)) || 
> (nativeFlag == null && DatabaseDescriptor.startNativeTransport()))
>         {
>             startNativeTransport();
>             StorageService.instance.setRpcReady(true);
>         } {code}
> The startup code here only sets RpcReady if native transport is enabled. If 
> you call 
> {code:java}
> nodetool enablebinary{code}
> then this flag doesn't get set.
> But with the change from CASSANDRA-13043 it requires RpcReady set to true in 
> order to get a leader for the counter update.
> Not sure what the correct fix is here, seems to only really use this flag for 
> counters. So thinking perhaps the fix is to just move this outside the if 
> condition.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to