code: private DateTime getCompactionTimestamp() throws IOException {
      DateTimeZone timeZone = DateTimeZone.forID(
          this.dataset.jobProps().getProp(MRCompactor.COMPACTION_TIMEZONE, MRCompactor.DEFAULT_COMPACTION_TIMEZONE));
  
      if (!this.recompactFromDestPaths) {
        return new DateTime(timeZone);
      }
  
      Set<Path> inputPaths = getInputPaths();
      long maxTimestamp = Long.MIN_VALUE;
      for (FileStatus status : FileListUtils.listFilesRecursively(this.fs, inputPaths)) {
        maxTimestamp = Math.max(maxTimestamp, status.getModificationTime());
      }
      return maxTimestamp == Long.MIN_VALUE ? new DateTime(timeZone) : new DateTime(maxTimestamp, timeZone);
    }
docs: For regular compactions, compaction timestamp is the time the compaction job starts.
  
  If this is a recompaction from output paths, the compaction timestamp will remain the same as previously
  persisted compaction time. This is because such a recompaction doesn't consume input data, so next time,
  whether a file in the input folder is considered late file should still be based on the previous compaction
  timestamp.