Fix purge-db edge case (#2747)
## Issue Addressed Currently, if you launch the beacon node with the `--purge-db` flag and the `beacon` directory exists, but one (or both) of the `chain_db` or `freezer-db` directories are missing, it will error unnecessarily with: ``` Failed to remove chain_db: No such file or directory (os error 2) ``` This is an edge case which can occur in cases of manual intervention (a user deleted the directory) or if you had previously run with the `--purge-db` flag and Lighthouse errored before it could initialize the db directories. ## Proposed Changes Check if the `chain_db`/`freezer_db` exists before attempting to remove them. This prevents unnecessary errors.
This commit is contained in:
parent
39c0d1219c
commit
8edd9d45ab
@ -36,16 +36,20 @@ pub fn get_config<E: EthSpec>(
|
|||||||
// If necessary, remove any existing database and configuration
|
// If necessary, remove any existing database and configuration
|
||||||
if client_config.data_dir.exists() && cli_args.is_present("purge-db") {
|
if client_config.data_dir.exists() && cli_args.is_present("purge-db") {
|
||||||
// Remove the chain_db.
|
// Remove the chain_db.
|
||||||
fs::remove_dir_all(client_config.get_db_path().ok_or("Failed to get db_path")?)
|
let chain_db = client_config.get_db_path().ok_or("Failed to get db_path")?;
|
||||||
.map_err(|err| format!("Failed to remove chain_db: {}", err))?;
|
if chain_db.exists() {
|
||||||
|
fs::remove_dir_all(chain_db)
|
||||||
|
.map_err(|err| format!("Failed to remove chain_db: {}", err))?;
|
||||||
|
}
|
||||||
|
|
||||||
// Remove the freezer db.
|
// Remove the freezer db.
|
||||||
fs::remove_dir_all(
|
let freezer_db = client_config
|
||||||
client_config
|
.get_freezer_db_path()
|
||||||
.get_freezer_db_path()
|
.ok_or("Failed to get freezer db path")?;
|
||||||
.ok_or("Failed to get freezer db path")?,
|
if freezer_db.exists() {
|
||||||
)
|
fs::remove_dir_all(freezer_db)
|
||||||
.map_err(|err| format!("Failed to remove chain_db: {}", err))?;
|
.map_err(|err| format!("Failed to remove chain_db: {}", err))?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create `datadir` and any non-existing parent directories.
|
// Create `datadir` and any non-existing parent directories.
|
||||||
|
Loading…
Reference in New Issue
Block a user