Move create_dir_all to AccountsDB::new (#7465)
AppendVec create doesn't need to try and create paths every time and it can stall while snapshot create is happening.
This commit is contained in:
parent
7adc721d96
commit
9d5a07bac4
|
@ -230,6 +230,7 @@ mod tests {
|
|||
let snapshot_package_output_path = temp_dir.join("snapshots_output");
|
||||
fs::create_dir_all(&snapshot_package_output_path).unwrap();
|
||||
|
||||
fs::create_dir_all(&accounts_dir).unwrap();
|
||||
// Create some storage entries
|
||||
let storage_entries: Vec<_> = (0..5)
|
||||
.map(|i| Arc::new(AccountStorageEntry::new(&accounts_dir, 0, i, 10)))
|
||||
|
|
|
@ -407,7 +407,7 @@ impl Default for AccountsDB {
|
|||
|
||||
impl AccountsDB {
|
||||
pub fn new(paths: Vec<PathBuf>) -> Self {
|
||||
if !paths.is_empty() {
|
||||
let new = if !paths.is_empty() {
|
||||
Self {
|
||||
paths: RwLock::new(paths),
|
||||
temp_paths: None,
|
||||
|
@ -422,8 +422,15 @@ impl AccountsDB {
|
|||
temp_paths: Some(temp_dirs),
|
||||
..Self::default()
|
||||
}
|
||||
};
|
||||
{
|
||||
let paths = new.paths.read().unwrap();
|
||||
for path in paths.iter() {
|
||||
std::fs::create_dir_all(path).expect("Create directory failed.");
|
||||
}
|
||||
}
|
||||
new
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub fn new_single() -> Self {
|
||||
|
|
|
@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize};
|
|||
use solana_sdk::{account::Account, clock::Epoch, hash::Hash, pubkey::Pubkey};
|
||||
use std::{
|
||||
fmt,
|
||||
fs::{create_dir_all, remove_file, OpenOptions},
|
||||
fs::{remove_file, OpenOptions},
|
||||
io,
|
||||
io::{Cursor, Seek, SeekFrom, Write},
|
||||
mem,
|
||||
|
@ -95,9 +95,6 @@ impl AppendVec {
|
|||
pub fn new(file: &Path, create: bool, size: usize) -> Self {
|
||||
if create {
|
||||
let _ignored = remove_file(file);
|
||||
if let Some(parent) = file.parent() {
|
||||
create_dir_all(parent).expect("Create directory failed");
|
||||
}
|
||||
}
|
||||
|
||||
let mut data = OpenOptions::new()
|
||||
|
|
Loading…
Reference in New Issue