Remote Compaction - CompactionFilter and other CFOptions from ObjectRegistry
Summary
In the initial version of the remote compaction, CompactionServiceOptionsOverride was introduced temporarily as a workaround to set the pointer configurations explicitly because passing them to the remote worker was not available at that time.
In the Meta's internal Offload infra, we are now able to register these objects set in the CFOptions including CompactionFilter, MergeOperator and others. These pointer configs are passed to the remote worker as CustomSharedPtr, CustomUniquePtr, or CustomRawPtr Option types, which can be created by Type::createFromString() on the remote side as long as they are registered in the ObjectRegistry. (As defined in https://github.com/facebook/rocksdb/blob/92ad4a88f3199b013532b37d6598c442319355a5/options/cf_options.cc#L259-L833)
Test Plan
Updated compaction_service_test
./compaction_service_test
Also tested with Meta's internal Offload infra
@jaykorean has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.
@jaykorean has updated the pull request. You must reimport the pull request before landing.
@jaykorean has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.
Plan changed
@jaykorean has updated the pull request. You must reimport the pull request before landing.
@jaykorean has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.