public boolean preCompactSelection(final HStore store, final List<HStoreFile> candidates,
    final CompactionLifeCycleTracker tracker, final User user) throws IOException {
    if (coprocEnvironments.isEmpty()) {
      return false;
    }
    boolean bypassable = true;
    return execOperation(new RegionObserverOperationWithoutResult(user, bypassable) {
      @Override
      public void call(RegionObserver observer) throws IOException {
        observer.preCompactSelection(this, store, candidates, tracker);
      }
    });
  }
Called prior to selecting the {@link HStoreFile}s for compaction from the list of currently
available candidates.
<p>
Supports Coprocessor 'bypass' -- 'bypass' is how this method indicates that it changed the
passed in <code>candidates</code>.
@param store      The store where compaction is being requested
@param candidates The currently available store files
@param tracker    used to track the life cycle of a compaction
@param user       the user
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java