• L
    Add a clipping internal iterator (#8327) · db325a59
    Levi Tamasi 提交于
    Summary:
    Logically, subcompactions process a key range [start, end); however, the way
    this is currently implemented is that the `CompactionIterator` for any given
    subcompaction keeps processing key-values until it actually outputs a key that
    is out of range, which is then discarded. Instead of doing this, the patch
    introduces a new type of internal iterator called `ClippingIterator` which wraps
    another internal iterator and "clips" its range of key-values so that any KVs
    returned are strictly in the [start, end) interval. This does eliminate a (minor)
    inefficiency by stopping processing in subcompactions exactly at the limit;
    however, the main motivation is related to BlobDB: namely, we need this to be
    able to measure the amount of garbage generated by a subcompaction
    precisely and prevent off-by-one errors.
    
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/8327
    
    Test Plan: `make check`
    
    Reviewed By: siying
    
    Differential Revision: D28761541
    
    Pulled By: ltamasi
    
    fbshipit-source-id: ee0e7229f04edabbc7bed5adb51771fbdc287f69
    db325a59
Makefile 87.0 KB