@Override
  public void run() {
    long compactionStartTime = System.currentTimeMillis();
    long numCompletedCompactionTasks = getNumCompletedCompactionTasks();
    long numAllCompactionTasks = getNumAllCompactionTasks();
    logger.info("[COMPACT] Starting cloud compaction for {} partitions", partitions.size());
    compactPartitions(); // Blocking call
    logger.info("[COMPACT] Completed cloud compaction and erased {} blobs from {} out of {} partitions in {} minutes",
        numBlobsErased.get(), getNumCompletedCompactionTasks() - numCompletedCompactionTasks,
        getNumAllCompactionTasks() - numAllCompactionTasks,
        TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis() - compactionStartTime));
    this.doneLatch.countDown();
  }
Public constructor.
@param cloudDestination the cloud destination to use.
@param partitions the set of partitions to compact.
@param vcrMetrics the metrics to update.
ambry-cloud/src/main/java/com/github/ambry/cloud/CloudStorageCompactor.java