fix: persistent cache, missing rewind between read and write

This commit is contained in:
rudy
2022-09-27 09:34:59 +02:00
committed by mayeul-zama
parent 3c1c0ca951
commit af3ee10ff8

View File

@@ -1,5 +1,5 @@
use std::borrow::BorrowMut;
use std::io::{BufReader, BufWriter, Write};
use std::io::{BufReader, BufWriter, Seek, Write};
use std::os::unix::prelude::MetadataExt;
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::{Arc, RwLock, RwLockWriteGuard};
@@ -244,12 +244,18 @@ where
content.len()
);
}
if let Err(err) = filelock.file.rewind() {
println!(
"PersistentCache::write: cannot rewind file: {}, {}",
self.path, err
);
return;
}
if let Err(err) = filelock.file.set_len(0) {
println!(
"PersistentCache::write: cannot truncate file: {}, {}",
self.path, err
);
return;
}
let file = &mut filelock.file;
let mut buf = BufWriter::new(file);