private void logCompactionEndMessage(CompactionRequestImpl cr, List<HStoreFile> sfs, long now,
    long compactionStartTime) {
    StringBuilder message = new StringBuilder("Completed" + (cr.isMajor() ? " major" : "")
      + " compaction of " + cr.getFiles().size() + (cr.isAllFiles() ? " (all)" : "")
      + " file(s) in " + this + " of " + this.getRegionInfo().getShortNameToLog() + " into ");
    if (sfs.isEmpty()) {
      message.append("none, ");
    } else {
      for (HStoreFile sf : sfs) {
        message.append(sf.getPath().getName());
        message.append("(size=");
        message.append(TraditionalBinaryPrefix.long2String(sf.getReader().length(), "", 1));
        message.append("), ");
      }
    }
    message.append("total size for store is ")
      .append(StringUtils.TraditionalBinaryPrefix.long2String(storeSize.get(), "", 1))
      .append(". This selection was in queue for ")
      .append(StringUtils.formatTimeDiff(compactionStartTime, cr.getSelectionTime()))
      .append(", and took ").append(StringUtils.formatTimeDiff(now, compactionStartTime))
      .append(" to execute.");
    LOG.info(message.toString());
    if (LOG.isTraceEnabled()) {
      int fileCount = storeEngine.getStoreFileManager().getStorefileCount();
      long resultSize = getTotalSize(sfs);
      String traceMessage = "COMPACTION start,end,size out,files in,files out,store size,"
        + "store files [" + compactionStartTime + "," + now + "," + resultSize + ","
        + cr.getFiles().size() + "," + sfs.size() + "," + storeSize + "," + fileCount + "]";
      LOG.trace(traceMessage);
    }
  }
Log a very elaborate compaction completion message.
@param cr                  Request.
@param sfs                 Resulting files.
@param compactionStartTime Start time.
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java