• P
    Fix handling of accidental truncation of IDENTITY file (#10173) · 3d358a7e
    Peter Dillinger 提交于
    Summary:
    A consequence of https://github.com/facebook/rocksdb/issues/9990 was requiring a non-empty DB ID to generate
    new SST files. But if the DB ID is not tracked in the manifest and the IDENTITY file
    is somehow truncated to 0 bytes, then an empty DB ID would be assigned, leading
    to crash. This change ensures a non-empty DB ID is assigned and set in the
    IDENTITY file.
    
    Also,
    * Some light refactoring to clean up the logic
    * (I/O efficiency) If the ID is tracked in the manifest and already matches the
    IDENTITY file, don't needlessly overwrite the file.
    * (Debugging) Log the DB ID to info log on open, because sometimes IDENTITY
    can change if DB is moved around (though it would be unusual for info log to
    be copied/moved without IDENTITY file)
    
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/10173
    
    Test Plan: unit tests expanded/updated
    
    Reviewed By: ajkr
    
    Differential Revision: D37176545
    
    Pulled By: pdillinger
    
    fbshipit-source-id: a9b414cd35bfa33de48af322a36c24538d50bef1
    3d358a7e
db_impl.h 110.7 KB