Class 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 Detail

      • gcListener

        @NotNull
        protected final @NotNull GCMonitor gcListener
    • Constructor Detail

      • 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 Detail

      • compactDown

        @Nullable
        public @Nullable CompactedNodeState compactDown​(@NotNull
                                                        @NotNull NodeState before,
                                                        @NotNull
                                                        @NotNull NodeState after,
                                                        @NotNull
                                                        @NotNull Canceller hardCanceller,
                                                        @NotNull
                                                        @NotNull Canceller softCanceller)
                                                 throws java.io.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:
        java.io.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 java.io.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:
        java.io.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 java.io.IOException
        Delegate compaction to another, usually simpler, implementation.
        Throws:
        java.io.IOException
      • compactWithDelegate

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