@Override
  public void close() throws IOException {
    if (!isOpen) {
      return;
    }
    try {
      shutDownExecutorService(scheduler, 5, TimeUnit.MINUTES);
      src.shutdown();
      tgt.shutdown();
      isOpen = false;
    } catch (Exception e) {
      throw new IOException(e);
    }
  }
@param storeId the name/id of the {@link Store}.
@param srcDir the directory of the {@link Store} to be copied from
@param tgtDir the directory of the {@link Store} to be copied to.
@param storeCapacity the capacity of the store.
@param fetchSizeInBytes the size of each fetch from the soure store.
@param storeConfig {@link StoreConfig} that contains config to initiate a {@link BlobStore}.
@param metrics {@link StoreMetrics} to use for metrics.
@param storeKeyFactory the {@link StoreKeyFactory} to use for {@link StoreKey}s in the {@link Store}.
@param diskIOScheduler the {@link DiskIOScheduler} to use.
@param diskSpaceAllocator the {@link DiskSpaceAllocator} to use.
@param transformers the list of {@link Transformer} functions to execute. They will be executed in order.
@param time the {@link Time} instance to use.
@throws StoreException
ambry-tools/src/main/java/com/github/ambry/store/StoreCopier.java