• Y
    Allow file-ingest-triggered flush to skip waiting for write-stall clear (#4751) · 9be3e6b4
    Yanqin Jin 提交于
    Summary:
    When write stall has already been triggered due to number of L0 files reaching
    threshold, file ingestion must proceed with its flush without waiting for the
    write stall condition to cleared by the compaction because compaction can wait
    for ingestion to finish (circular wait).
    
    In order to avoid this wait, we can set `FlushOptions.allow_write_stall` to be
    true (default is false). Setting it to false can cause deadlock.
    
    This can happen when the number of compaction threads is low.
    
    Considere the following
    ```
    Time  compaction_thread                        ingestion_thread
     |                                             num_running_ingest_file_++
     |    while(num_running_ingest_file_>0){wait}
     |                                             flush
     V
    ```
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/4751
    
    Differential Revision: D13343037
    
    Pulled By: riversand963
    
    fbshipit-source-id: d3b95938814af46ec4c463feff0b50c70bd8b23f
    9be3e6b4
db_impl.cc 113.1 KB