refactor(sync): use shared atomic_write in queue/state save
OfflineQueue::save and SyncState::save each had their own copy of the temp-file + rename + cleanup-on-failure dance, even though storage's pub(crate) atomic_write is already imported in this file. Inline the shared helper so the crate has one canonical atomic write path.
This commit is contained in:
parent
56944360e0
commit
ebe09d0afe
|
|
@ -341,13 +341,7 @@ impl OfflineQueue {
|
|||
return Ok(());
|
||||
}
|
||||
let content = serde_json::to_string_pretty(self)?;
|
||||
// Atomic write: write to temp then rename
|
||||
let temp_path = workspace_path.join(".syncqueue.json.tmp");
|
||||
std::fs::write(&temp_path, &content)?;
|
||||
if let Err(e) = std::fs::rename(&temp_path, &queue_path) {
|
||||
let _ = std::fs::remove_file(&temp_path);
|
||||
return Err(e.into());
|
||||
}
|
||||
atomic_write(&queue_path, content.as_bytes())?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
@ -534,14 +528,7 @@ impl SyncState {
|
|||
pub fn save(&self, workspace_path: &Path) -> Result<()> {
|
||||
let state_path = workspace_path.join(".syncstate.json");
|
||||
let content = serde_json::to_string_pretty(self)?;
|
||||
// Atomic write: write to temp file then rename to prevent corruption on crash
|
||||
let temp_path = workspace_path.join(".syncstate.json.tmp");
|
||||
std::fs::write(&temp_path, &content)?;
|
||||
if let Err(e) = std::fs::rename(&temp_path, &state_path) {
|
||||
// Clean up temp file on rename failure to prevent accumulation
|
||||
let _ = std::fs::remove_file(&temp_path);
|
||||
return Err(e.into());
|
||||
}
|
||||
atomic_write(&state_path, content.as_bytes())?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue