Skip to content
  • Andrew Kryczka's avatar
    Fix range deletion tombstone ingestion with global seqno (#6429) · 69679e73
    Andrew Kryczka authored
    Summary:
    Original author: jeffrey-xiao
    
    If we are writing a global seqno for an ingested file, the range
    tombstone metablock gets accessed and put into the cache during
    ingestion preparation. At the time, the global seqno of the ingested
    file has not yet been determined, so the cached block will not have a
    global seqno. When the file is ingested and we read its range tombstone
    metablock, it will be returned from the cache with no global seqno. In
    that case, we use the actual seqnos stored in the range tombstones,
    which are all zero, so the tombstones cover nothing.
    
    This commit removes global_seqno_ variable from Block. When iterating
    over a block, the global seqno for the block is determined by the
    iterator instead of storing this mutable attribute in Block.
    Additionally, this commit adds a regression test to check that keys are
    deleted when ingesting a file with a global seqno and range deletion
    tombstones.
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/6429
    
    Differential Revision: D19961563
    
    Pulled By: ajkr
    
    fbshipit-source-id: 5cf777397fa3e452401f0bf0364b0750492487b7
    69679e73