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