Class CheckpointCompactor

java.lang.Object
org.apache.jackrabbit.oak.segment.Compactor
org.apache.jackrabbit.oak.segment.CheckpointCompactor
Direct Known Subclasses:
ParallelCompactor

public class CheckpointCompactor extends Compactor
This compactor implementation is aware of the checkpoints in the repository. It uses this information to further optimise the compaction result by
  • Rebasing the checkpoints and subsequently the root on top of each other in chronological order. This results minimises the deltas that need to be processed and stored.
  • Caching the compacted checkpoints and root states for deduplication should the same checkpoint or root state occur again in a later compaction retry cycle.
  • Field Details

    • gcListener

      @NotNull protected final @NotNull GCMonitor gcListener
    • compactor

      @NotNull protected final @NotNull ClassicCompactor compactor
  • Constructor Details

    • CheckpointCompactor

      public CheckpointCompactor(@NotNull @NotNull GCMonitor gcListener, @NotNull @NotNull CompactionWriter writer, @NotNull @NotNull GCNodeWriteMonitor compactionMonitor)
      Create a new instance based on the passed arguments.
      Parameters:
      gcListener - listener receiving notifications about the garbage collection process
      writer - segment writer used to serialise to segments
      compactionMonitor - notification call back for each compacted nodes, properties, and binaries
  • Method Details

    • compactDown

      @Nullable public @Nullable CompactedNodeState compactDown(@NotNull @NotNull NodeState before, @NotNull @NotNull NodeState after, @NotNull @NotNull Canceller hardCanceller, @NotNull @NotNull Canceller softCanceller) throws IOException
      Description copied from class: Compactor
      compact the differences between after and before on top of after.
      Specified by:
      compactDown in class Compactor
      Parameters:
      before - the node state to diff against from after
      after - the node state diffed against before
      hardCanceller - the trigger for hard cancellation, will abandon compaction if cancelled
      softCanceller - the trigger for soft cancellation, will return partially compacted state if cancelled
      Returns:
      the compacted node state or null if hard-cancelled
      Throws:
      IOException - will throw exception if any errors occur during compaction
    • compact

      @Nullable public @Nullable CompactedNodeState compact(@NotNull @NotNull NodeState before, @NotNull @NotNull NodeState after, @NotNull @NotNull NodeState onto, @NotNull @NotNull Canceller canceller) throws IOException
      Description copied from class: Compactor
      compact the differences between after and before on top of onto.
      Specified by:
      compact in class Compactor
      Parameters:
      before - the node state to diff against from after
      after - the node state diffed against before
      onto - the node state to compact to apply the diff to
      canceller - the trigger for hard cancellation, will abandon compaction if cancelled
      Returns:
      the compacted node state or null if hard-cancelled
      Throws:
      IOException - will throw exception if any errors occur during compaction
    • compactDownWithDelegate

      @Nullable protected @Nullable CompactedNodeState compactDownWithDelegate(@NotNull @NotNull NodeState before, @NotNull @NotNull NodeState after, @NotNull @NotNull Canceller hardCanceller, @NotNull @NotNull Canceller softCanceller) throws IOException
      Delegate compaction to another, usually simpler, implementation.
      Throws:
      IOException
    • compactWithDelegate

      @Nullable protected @Nullable CompactedNodeState compactWithDelegate(@NotNull @NotNull NodeState before, @NotNull @NotNull NodeState after, @NotNull @NotNull NodeState onto, @NotNull @NotNull Canceller canceller) throws IOException
      Throws:
      IOException