Skip to content
  • Levi Tamasi's avatar
    Refactor the blob file related logic in VersionBuilder (#6835) · 1551f101
    Levi Tamasi authored
    Summary:
    This patch is groundwork for an upcoming change to store the set of
    linked SSTs in `BlobFileMetaData`. With the current code, a new
    `BlobFileMetaData` object is created each time a `VersionEdit` touches
    a certain blob file. This is fine as long as these objects are lightweight
    and cheap to create; however, with the addition of the linked SST set, it would
    be very inefficient since the set would have to be copied over and over again.
    Note that this is the same kind of problem that `VersionBuilder` is solving
    w/r/t `Version`s and files, and we can apply the same solution; that is, we can
    accumulate the changes in a different mutable object, and apply the delta in
    one shot when the changes are committed. The patch does exactly that by
    adding a new `BlobFileMetaDataDelta` class to `VersionBuilder`. In addition,
    it turns the existing `GetBlobFileMetaData` helper into `IsBlobFileInVersion`
    (which is fine since that's the only thing the method's clients care about now),
    and adds a couple of helper methods that can create a `BlobFileMetaData`
    object from the `BlobFileMetaData` in the base (if applicable) and the delta
    when the `Version` is saved.
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/6835
    
    Test Plan: `make check`
    
    Reviewed By: riversand963
    
    Differential Revision: D21505187
    
    Pulled By: ltamasi
    
    fbshipit-source-id: d81a48c5f2ca7b79d7124c935332a6bcf3d5d988
    1551f101