Class CompactionContext

java.lang.Object
org.apache.hadoop.hbase.regionserver.compactions.CompactionContext
Direct Known Subclasses:
DateTieredStoreEngine.DateTieredCompactionContext, DefaultStoreEngine.DefaultCompactionContext, StripeStoreEngine.StripeCompaction

@Private public abstract class CompactionContext extends Object
This class holds all "physical" details necessary to run a compaction, and abstracts away the details specific to a particular compaction. It also has compaction request with all the logical details. Hence, this class is basically the compaction.
  • Field Details

  • Constructor Details

  • Method Details

    • preSelect

      public abstract List<HStoreFile> preSelect(List<HStoreFile> filesCompacting)
      Called before coprocessor preCompactSelection and should filter the candidates for coprocessor; i.e. exclude the files that definitely cannot be compacted at this time.
      Parameters:
      filesCompacting - files currently compacting
      Returns:
      the list of files that can theoretically be compacted.
    • select

      public abstract boolean select(List<HStoreFile> filesCompacting, boolean isUserCompaction, boolean mayUseOffPeak, boolean forceMajor) throws IOException
      Called to select files for compaction. Must fill in the request field if successful.
      Parameters:
      filesCompacting - Files currently being compacted by other compactions.
      isUserCompaction - Whether this is a user compaction.
      mayUseOffPeak - Whether the underlying policy may assume it's off-peak hours.
      forceMajor - Whether to force major compaction.
      Returns:
      Whether the selection succeeded. Selection may be empty and lead to no compaction.
      Throws:
      IOException
    • forceSelect

      public void forceSelect(CompactionRequestImpl request)
      Forces external selection to be applied for this compaction.
      Parameters:
      request - The pre-cooked request with selection and other settings.
    • compact

      public abstract List<org.apache.hadoop.fs.Path> compact(ThroughputController throughputController, User user) throws IOException
      Throws:
      IOException
    • getRequest

    • hasSelection

      public boolean hasSelection()