code: public void shutdown()
      {
          logger.info("Waiting for messaging service to quiesce");
          // We may need to schedule hints on the mutation stage, so it's erroneous to shut down the mutation stage first
          assert !StageManager.getStage(Stage.MUTATION).isShutdown();
  
          // the important part
          callbacks.shutdownBlocking();
  
          // attempt to humor tests that try to stop and restart MS
          try
          {
              for (SocketThread th : socketThreads)
                  th.close();
          }
          catch (IOException e)
          {
              throw new IOError(e);
          }
      }
docs: Wait for callbacks and don't allow any more to be created (since they could require writing hints)