Skip to content
  • Maysam Yabandeh's avatar
    Refresh snapshot list during long compactions (2nd attempt) (#5278) · 6a40ee5e
    Maysam Yabandeh authored
    Summary:
    Part of compaction cpu goes to processing snapshot list, the larger the list the bigger the overhead. Although the lifetime of most of the snapshots is much shorter than the lifetime of compactions, the compaction conservatively operates on the list of snapshots that it initially obtained. This patch allows the snapshot list to be updated via a callback if the compaction is taking long. This should let the compaction to continue more efficiently with much smaller snapshot list.
    For simplicity, to avoid the feature is disabled in two cases: i) When more than one sub-compaction are sharing the same snapshot list, ii) when Range Delete is used in which the range delete aggregator has its own copy of snapshot list.
    This fixes the reverted https://github.com/facebook/rocksdb/pull/5099 issue with range deletes.
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/5278
    
    Differential Revision: D15203291
    
    Pulled By: maysamyabandeh
    
    fbshipit-source-id: fa645611e606aa222c7ce53176dc5bb6f259c258
    6a40ee5e