• Z
    Explicitly closing all directory file descriptors (#10049) · 65893ad9
    Zichen Zhu 提交于
    Summary:
    Currently, the DB directory file descriptor is left open until the deconstruction process (`DB::Close()` does not close the file descriptor). To verify this, comment out the lines between `db_ = nullptr` and `db_->Close()` (line 512, 513, 514, 515 in ldb_cmd.cc) to leak the ``db_'' object, build `ldb` tool and run
    ```
    strace --trace=open,openat,close ./ldb --db=$TEST_TMPDIR --ignore_unknown_options put K1 V1 --create_if_missing
    ```
    There is one directory file descriptor that is not closed in the strace log.
    
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/10049
    
    Test Plan: Add a new unit test DBBasicTest.DBCloseAllDirectoryFDs: Open a database with different WAL directory and three different data directories, and all directory file descriptors should be closed after calling Close(). Explicitly call Close() after a directory file descriptor is not used so that the counter of directory open and close should be equivalent.
    
    Reviewed By: ajkr, hx235
    
    Differential Revision: D36722135
    
    Pulled By: littlepig2013
    
    fbshipit-source-id: 07bdc2abc417c6b30997b9bbef1f79aa757b21ff
    65893ad9
db_basic_test.cc 144.6 KB