aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2022-09-13 15:57:27 +0200
committerAlex Auvolat <alex@adnab.me>2022-09-13 15:57:27 +0200
commit07febd3ecd0d491ed01b7ca43846aa43e423b2a1 (patch)
treedb27e4752317766f169159d9fe1597bdacc37f91
parent11bdc971e2aaa1ef90358b7d9c1bd6a8e9743bbf (diff)
downloadgarage-07febd3ecd0d491ed01b7ca43846aa43e423b2a1.tar.gz
garage-07febd3ecd0d491ed01b7ca43846aa43e423b2a1.zip
Ensure data dir is created immediately when Garage starts (fix #349)
-rw-r--r--src/model/garage.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/model/garage.rs b/src/model/garage.rs
index 66c359e7..ec1ec956 100644
--- a/src/model/garage.rs
+++ b/src/model/garage.rs
@@ -6,7 +6,7 @@ use garage_db as db;
use garage_util::background::*;
use garage_util::config::*;
-use garage_util::error::Error;
+use garage_util::error::*;
use garage_rpc::system::System;
@@ -76,9 +76,14 @@ pub struct GarageK2V {
impl Garage {
/// Create and run garage
pub fn new(config: Config, background: Arc<BackgroundRunner>) -> Result<Arc<Self>, Error> {
+ // Create meta dir and data dir if they don't exist already
+ std::fs::create_dir_all(&config.metadata_dir)
+ .ok_or_message("Unable to create Garage metadata directory")?;
+ std::fs::create_dir_all(&config.data_dir)
+ .ok_or_message("Unable to create Garage data directory")?;
+
info!("Opening database...");
let mut db_path = config.metadata_dir.clone();
- std::fs::create_dir_all(&db_path).expect("Unable to create Garage meta data directory");
let db = match config.db_engine.as_str() {
// ---- Sled DB ----
#[cfg(feature = "sled")]