Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-6399

Re-establish full offline compaction functionality



    • Task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.7.6, 1.8.0
    • segment-tar
    • None


      The work on OAK-5790 and OAK-3349 replaced the former offline compaction code (implemented in the Compactor) class with the one used for online compaction (implemented in the OnlineCompactor class), which currently causes offline compaction to lose a few features.

      Once above issues are resolved we need to decide how we should proceed with offline compaction. Either we stay with the Compactor class (possibly renaming it to OfflineCompactor) and rewire it into FileStore.compact(). Or alternatively we unify the functionality of OnlineCompactor and Compactor so we can use a single class.

      Features that are present in Compactor that are currently not present in OnlineCompactor:

      • Binary deduplication based on the content of binaries. I think we can drop this feature as we should rely on a blob store for most binaries.
      • oak.compaction.eagerFlush feature flag. I think we can drop this one as the underlying issue should have been fixed with OAK-6110 and should not be present in OnlineCompactor.
      • content equality check (used by backup and restore). We can probably drop this but need to double check why exactly this was needed.
      • progress logging (ProgressTracker). Should be easy to implement in OnlineCompactor. It is probably a good idea to unify this with GCNodeWriteMonitor.
      • oak.segment.compaction.cacheSize feature flag. OnlineCompactor does not have its own caches but relies on those of the underlying FileStore. This feature flag should thus probably be used to configure these caches.


        Issue Links



              mduerig Michael Dürig
              mduerig Michael Dürig
              0 Vote for this issue
              3 Start watching this issue