Skip to content

Commit 9919db9

Browse files
Do not use the system's tmp dir
Renaming a file does not work across filesystems. co-authored-by: Issac Kelly <[email protected]>
1 parent bb5f678 commit 9919db9

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/fs_store.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use std::{
22
collections::{HashMap, HashSet},
3+
fs::File,
34
io::Write,
45
path::{Path, PathBuf},
56
str,
@@ -192,15 +193,15 @@ fn write_chunk(
192193
name: SavedChunkName,
193194
) -> Result<(), Error> {
194195
// Write to a temp file and then rename to avoid partial writes
195-
let mut temp_save =
196-
tempfile::NamedTempFile::new().map_err(|e| Error(ErrorKind::CreateTempFile(e)))?;
197-
let temp_save_path = temp_save.path().to_owned();
198-
temp_save
199-
.as_file_mut()
196+
let temp_dir =
197+
tempfile::TempDir::new_in(root).map_err(|e| Error(ErrorKind::CreateTempFile(e)))?;
198+
let temp_save_path = temp_dir.path().join(name.filename());
199+
let mut temp_save_file =
200+
File::create(&temp_save_path).map_err(|e| Error(ErrorKind::CreateTempFile(e)))?;
201+
temp_save_file
200202
.write_all(chunk)
201203
.map_err(|e| Error(ErrorKind::WriteTempFile(temp_save_path.clone(), e)))?;
202-
temp_save
203-
.as_file_mut()
204+
temp_save_file
204205
.sync_all()
205206
.map_err(|e| Error(ErrorKind::WriteTempFile(temp_save_path.clone(), e)))?;
206207

0 commit comments

Comments
 (0)