[ 
https://issues.apache.org/jira/browse/CASSANDRA-18935?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

miklosovic updated CASSANDRA-18935:
-----------------------------------
    Attachment: signature.asc

I dont get this "full view of cluster" thing. if RPC\_READY is true or false is 
in fact irrelevant. It is used just for leader selection. If we choose NORMAL 
node and its RPC is not ready yet, that doesnt matter. It would be same 
situation as now.

The logic around replica leader selection just has to have enough nodes to 
choose from, whatever that means.

The only discrepancy is that if there is, e.g., 5 nodes cluster and we go to 
upgrade it in a rolling fashion, after restart of a node and turning off its 
RPC, that node would not be part of the leader selection process on old nodes, 
because its rpc would be turned off.

Then if 4 nodes are upgraded with rpc disabled, the last node would have no 
replicas to choose from but itself.

As soon as the last node is upgraded, it would start to filter on STATUS (as 
any other node is doing at this moment)

I think that filer on NORMAL would be problematic only when rpc is disabled 
while cluster is being upgraded.

Sent from ProtonMail mobile



\

> 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.x, 3.11.x, 4.0.x, 4.1.x, 5.0-rc, 5.x
>
>         Attachments: 18935-3.11.patch, image-2023-11-16-10-56-16-693.png, 
> signature.asc
>
>          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]

Reply via email to