None are essential. Cassandra will gracefully shutdown in any scenario as long as it's not killed with a SIGKILL. However, drain does have a few benefits over just a normal shutdown. It will stop a few extra services (batchlog, compactions) and importantly it will also force recycling of dirty commitlog segments, meaning there will be less commitlog files to replay on startup and reducing startup time.
A comment in the code for drain also indicates that it will wait for in-progress streaming to complete, but I haven't managed to find 1. where this occurs, or 2. if it actually differs to a normal shutdown. Note that this is all w.r.t 2.1. In 3.0.10 and 3.10 drain and shutdown more or less do the exact same thing, however drain will log some extra messages. On 2 January 2018 at 07:07, Jing Meng <self.rel...@gmail.com> wrote: > Hi all. > > Recently we made a change to our production env c* cluster (2.1.18) - > placing the commit log to the same SSD where data is stored, which needs > restarting all nodes. > > Before restarting a cassandra node, we ran the following nodetool utils: > $ nodetool disablethrift && sleep 5 > $ nodetool disablebinary && sleep 5 > $ nodetool disable gossip && sleep 5 > $ nodetool drain && sleep 5 > > It was "graceful" as expected (no significant errors found), but the > process is still a myth to us: are those commands used above "sufficient", > and/or why? The offical doc (docs.datastax.com) did not help with this > operation detail, though "nodetool drain" is apparently essential. >