[ 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