@Override
  public void shutdown() throws InterruptedException {
    isRunning = false;
    logger.info("Shutting down DiskAwareFileCopyThreadPoolManager");
    threadQueueLock.lock();
    runningThreads.forEach((diskId, fileCopyThreads) -> {
      fileCopyThreads.forEach(fileCopyThread -> {
        try {
          fileCopyThread.shutDown();
        } catch (Exception e) {
          logger.error("Error while shutting down thread {}", fileCopyThread.threadName, e);
        }
      });
    });
    threadQueueLock.unlock();
    shutdownLatch.await();
  }
Initiates shutdown of the thread pool manager and waits for completion.
@throws InterruptedException if the shutdown wait is interrupted
ambry-file-transfer/src/main/java/com/github/ambry/filetransfer/DiskAwareFileCopyThreadPoolManager.java