Details
-
Task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
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-6110and 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.