If we invoke nodetool drain before shutdown, it sometimes fails to shut down messaging service in time (in this case - timing out the shutdown of the eventloopgroup by Netty). But, not before we manage to set isShutdown of StorageService to true, despite aborting further drain logic (including shutting down mutation stages).
Then, via on shutdown hook, we invoke drain() method again, implicitly. We see that the mutation stage is not shutdown and proceed to assert that isShutdown == false, failing that assertion and triggering a second error log message.
The patch merely ensures that any exception thrown by MS shutdown is captured so that drain logic can complete the first time around.