As a work-around for T327954, de-initialization of Cassandra needs to occur in the systemd unit, so that it can be applied uniformly to both host shutdown/reboots, and service restarts. Since the deinit sequence will conflict with what is being done in c-foreach-restart, those commands will need to be removed (prior to the unit changes).
Example systemd unit (untested):
[Unit] Description=distributed storage system for structured data After=network.target # On bootstrap / provisioning, don't attempt to start all instances, # wait instead for the guard file to exist, see also T214166 ConditionPathExists=/etc/cassandra-a/service-enabled [Service] User=cassandra PIDFile=/var/run/cassandra/cassandra-a.pid LimitNOFILE=100000 LimitMEMLOCK=infinity Environment="CASSANDRA_INCLUDE=/etc/cassandra.in.sh" Environment="CASSANDRA_CONF=/etc/cassandra-a" Environment="CASSANDRA_INSTANCE=sessionstore1001-a" ExecStart=/usr/sbin/cassandra -p /var/run/cassandra/cassandra-a.pid # Deinit on shutdown (see: https://phabricator.wikimedia.org/T327954) ExecStop=-/usr/local/bin/nodetool-a disablethrift ExecStop=-/usr/local/bin/nodetool-a disablebinary ExecStop=-/usr/local/bin/nodetool-a disablegossip ExecStop=-/usr/local/bin/nodetool-a drain ExecStop=/usr/local/bin/nodetool-a stopdaemon