• M
    Disallow transaction log iterator to skip sequences · ae8e0770
    Mayank Agarwal 提交于
    Summary:
    This is expected to solve the "gaps in transaction log iterator" problem.
    * After a lot of observations on the gaps on the sigmafio machines I found that it is due to a race between log reader and writer always.
    * So when we drop the wormhole subscription and refresh the iterator, the gaps are not there.
    * It is NOT due to some boundary or corner case left unattended in the iterator logic because I checked many instances of the gaps against their log files with ldb. The log files are NOT corrupted also.
    * The solution is to not allow the iterator to read incompletely written sequences and detect gaps inside itself and invalidate it which will cause the application to refresh the iterator normally and seek to the required sequence properly.
    * Thus, the iterator can at least guarantee that it will not give any gaps.
    
    Test Plan:
    * db_test based log iterator tests
    * db_repl_stress
    * testing on sigmafio setup to see gaps go away
    
    Reviewers: dhruba, haobo
    
    Reviewed By: dhruba
    
    CC: leveldb
    
    Differential Revision: https://reviews.facebook.net/D13593
    ae8e0770
transaction_log_impl.cc 7.8 KB