• M
    Double Crash in kPointInTimeRecovery with TransactionDB (#6313) · 2f973ca9
    Maysam Yabandeh 提交于
    Summary:
    In WritePrepared there could be gap in sequence numbers. This breaks the trick we use in kPointInTimeRecovery which assume the first seq in the log right after the corrupted log is one larger than the last seq we read from the logs. To let this trick keep working, we add a dummy entry with the expected sequence to the first log right after recovery.
    Also in WriteCommitted, if the log right after the corrupted log is empty, since it has no sequence number to let the sequential trick work, it is assumed as unexpected behavior. This is however expected to happen if we close the db after recovering from a corruption and before writing anything new to it. To remedy that, we apply the same technique by writing a dummy entry to the log that is created after the corrupted log.
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/6313
    
    Differential Revision: D19458291
    
    Pulled By: maysamyabandeh
    
    fbshipit-source-id: 09bc49e574690085df45b034ca863ff315937e2d
    2f973ca9
db_impl.h 88.1 KB