void compact(CompactionDetails details, byte[] bundleReadBuffer) throws IOException, StoreException {
    checkStarted();
    remoteTokenTracker.refreshPeerReplicaTokens();
    compactor.compact(details, bundleReadBuffer);
    checkCapacityAndUpdateReplicaStatusDelegate();
    blobStoreStats.onCompactionFinished();
    logger.info("One cycle of compaction is completed on the store {}", storeId);
  }
Compacts the store data based on {@code details}.
@param details the {@link CompactionDetails} describing what needs to be compacted.
@param bundleReadBuffer the preAllocated buffer for bundle read in compaction copy phase.
@throws IllegalArgumentException if any of the provided segments doesn't exist in the log or if one or more offsets
in the segments to compact are in the journal.
@throws IOException if there is any error creating the {@link CompactionLog}.
@throws StoreException if there are any errors during the compaction.
ambry-store/src/main/java/com/github/ambry/store/BlobStore.java