Skip to content
  • Levi Tamasi's avatar
    Add blob files to VersionStorageInfo/VersionBuilder (#6597) · 6f62322f
    Levi Tamasi authored
    Summary:
    The patch adds a couple of classes to represent metadata about
    blob files: `SharedBlobFileMetaData` contains the information elements
    that are immutable (once the blob file is closed), e.g. blob file number,
    total number and size of blob files, checksum method/value, while
    `BlobFileMetaData` contains attributes that can vary across versions like
    the amount of garbage in the file. There is a single `SharedBlobFileMetaData`
    for each blob file, which is jointly owned by the `BlobFileMetaData` objects
    that point to it; `BlobFileMetaData` objects, in turn, are owned by `Version`s
    and can also be shared if the (immutable _and_ mutable) state of the blob file
    is the same in two versions.
    
    In addition, the patch adds the blob file metadata to `VersionStorageInfo`, and extends
    `VersionBuilder` so that it can apply blob file related `VersionEdit`s (i.e. those
    containing `BlobFileAddition`s and/or `BlobFileGarbage`), and save blob file metadata
    to a new `VersionStorageInfo`. Consistency checks are also extended to ensure
    that table files point to blob files that are part of the `Version`, and that all blob files
    that are part of any given `Version` have at least some _non_-garbage data in them.
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/6597
    
    Test Plan: `make check`
    
    Reviewed By: riversand963
    
    Differential Revision: D20656803
    
    Pulled By: ltamasi
    
    fbshipit-source-id: f1f74d135045b3b42d0146f03ee576ef0a4bfd80
    6f62322f