From dd7c1271233d1afea6cf4c76d58c30f8c5d1904c Mon Sep 17 00:00:00 2001 From: care0717 Date: Sun, 27 Jun 2021 17:58:41 +0900 Subject: [PATCH] fix: create wal dir if not exists --- src/bin/server.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/bin/server.rs b/src/bin/server.rs index 7fbf752..4e7c448 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -8,7 +8,7 @@ use std::net::{TcpListener, TcpStream}; use std::path::Path; use std::result::Result::Ok; use std::sync::{Arc, RwLock}; -use std::thread; +use std::{thread, fs}; #[macro_use] extern crate log; @@ -18,8 +18,13 @@ fn main() { let address = "0.0.0.0:33333"; let listener = TcpListener::bind(address).expect("Error. failed to bind."); info!("Listening on {}", address); - - let wal = Wal::new(Path::new("data/wal/wal.bin")).unwrap(); + let wal_path = Path::new("data/wal/wal.bin"); + if let Some(parent) = wal_path.parent() { + if !parent.exists() { + fs::create_dir_all(parent).unwrap(); + } + } + let wal = Wal::new(wal_path).unwrap(); let avl_memtable = AvlMemtable::new(wal).unwrap(); let memtable: Arc>> = Arc::new(RwLock::new(Box::new(avl_memtable)));