Ensure data dir is created immediately when Garage starts (fix #349)
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing

This commit is contained in:
Alex 2022-09-13 15:57:27 +02:00
parent 11bdc971e2
commit 07febd3ecd
Signed by: lx
GPG key ID: 0E496D15096376BE

View file

@ -6,7 +6,7 @@ use garage_db as db;
use garage_util::background::*; use garage_util::background::*;
use garage_util::config::*; use garage_util::config::*;
use garage_util::error::Error; use garage_util::error::*;
use garage_rpc::system::System; use garage_rpc::system::System;
@ -76,9 +76,14 @@ pub struct GarageK2V {
impl Garage { impl Garage {
/// Create and run garage /// Create and run garage
pub fn new(config: Config, background: Arc<BackgroundRunner>) -> Result<Arc<Self>, Error> { 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..."); info!("Opening database...");
let mut db_path = config.metadata_dir.clone(); 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() { let db = match config.db_engine.as_str() {
// ---- Sled DB ---- // ---- Sled DB ----
#[cfg(feature = "sled")] #[cfg(feature = "sled")]