Skip to content
  • Anand Ananthabhotla's avatar
    Allow DB resume after background errors (#3997) · 52d4c9b7
    Anand Ananthabhotla authored
    Summary:
    Currently, if RocksDB encounters errors during a write operation (user requested or BG operations), it sets DBImpl::bg_error_ and fails subsequent writes. This PR allows the DB to be resumed for certain classes of errors. It consists of 3 parts -
    1. Introduce Status::Severity in rocksdb::Status to indicate whether a given error can be recovered from or not
    2. Refactor the error handling code so that setting bg_error_ and deciding on severity is in one place
    3. Provide an API for the user to clear the error and resume the DB instance
    
    This whole change is broken up into multiple PRs. Initially, we only allow clearing the error for Status::NoSpace() errors during background flush/compaction. Subsequent PRs will expand this to include more errors and foreground operations such as Put(), and implement a polling mechanism for out-of-space errors.
    Closes https://github.com/facebook/rocksdb/pull/3997
    
    Differential Revision: D8653831
    
    Pulled By: anand1976
    
    fbshipit-source-id: 6dc835c76122443a7668497c0226b4f072bc6afd
    52d4c9b7