From 83ddce011d9726b013314634f937b8bf66fe45c3 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 13 Sep 2016 10:33:03 +0200 Subject: [PATCH] ensure the target folder doesn't exist before renaming (#2074) --- ethcore/src/snapshot/service.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ethcore/src/snapshot/service.rs b/ethcore/src/snapshot/service.rs index 30d5ab716..78a065958 100644 --- a/ethcore/src/snapshot/service.rs +++ b/ethcore/src/snapshot/service.rs @@ -354,6 +354,10 @@ impl Service { // destroy the old snapshot reader. *reader = None; + if snapshot_dir.exists() { + try!(fs::remove_dir_all(&snapshot_dir)); + } + try!(fs::rename(temp_dir, &snapshot_dir)); *reader = Some(try!(LooseReader::new(snapshot_dir))); @@ -428,16 +432,11 @@ impl Service { let snapshot_dir = self.snapshot_dir(); - trace!(target: "snapshot", "removing old snapshot dir at {}", snapshot_dir.to_string_lossy()); - if let Err(e) = fs::remove_dir_all(&snapshot_dir) { - match e.kind() { - ErrorKind::NotFound => {} - _ => return Err(e.into()), - } + if snapshot_dir.exists() { + trace!(target: "snapshot", "removing old snapshot dir at {}", snapshot_dir.to_string_lossy()); + try!(fs::remove_dir_all(&snapshot_dir)); } - try!(fs::create_dir(&snapshot_dir)); - trace!(target: "snapshot", "copying restored snapshot files over"); try!(fs::rename(self.temp_recovery_dir(), &snapshot_dir));