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

Stefan Miklosovic commented on CASSANDRA-18555:
-----------------------------------------------

Actually, as I looked more into it, the ability to retrieve the failed 
decommission state in something like "nodetool status" would mean that we would 
need to introduce this "state" into TokenMetadata and "topology" and this stuff 
would need to be propagated via Gossip etc. Think about it ... if we are about 
to know that decommission has failed on some node _from whatever node_, the 
only way a node knows that such and such node failed to decommission is to get 
this information from Gossip. I think that is way too much work ...

On the other hand, if I understand this correctly, this (1) is a Runnable which 
is passed to this method (2) where the actual decommission is done and it is 
run here (3) at the very end.

So, as native transport is being shut down as part of that Runnable here (4), 
that means that if something goes wrong with decommission and it throw an 
exception, thar Runnable is never called which means that NativeTransport / CQL 
together with Gossip is never stopped either so we do have ability to connect 
to CQL even if decommission fails, no?

That means that we might reflect the fact that decommission has failed by 
writing it to some table - even a virtual one - and we do not need to depend on 
JMX nor on any nodetool.

(1) 
https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/service/StorageService.java#L5189
(2) 
https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/service/StorageService.java#L5210
(3) 
https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/service/StorageService.java#L5293
(4) 
https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/service/StorageService.java#L5193-L5194

> A new nodetool/JMX command that tells whether node's decommission failed or 
> not
> -------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-18555
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18555
>             Project: Cassandra
>          Issue Type: Task
>          Components: Observability/JMX
>            Reporter: Jaydeepkumar Chovatia
>            Assignee: Jaydeepkumar Chovatia
>            Priority: Normal
>
> Currently, when a node is being decommissioned and if any failure happens, 
> then an exception is thrown back to the caller.
> But Cassandra's decommission takes considerable time ranging from minutes to 
> hours to days. There are various scenarios in that the caller may need to 
> probe the status again:
>  * The caller times out
>  * It is not possible to keep the caller hanging for such a long time
> And If the caller does not know what happened internally, then it cannot 
> retry, etc., leading to other issues.
> So, in this ticket, I am going to add a new nodetool/JMX command that can be 
> invoked by the caller anytime, and it will return the correct status.
> It might look like a smaller change, but when we need to operate Cassandra at 
> scale in a large-scale fleet, then this becomes a bottleneck and require 
> constant operator intervention.



--
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