Browse Source

Sync .ecx file before close matching Go's EcVolume.Close

Go calls ev.ecxFile.Sync() before closing to ensure in-place deletion
marks are flushed to disk. Without this, deletion marks written via
MarkNeedleDeleted could be lost on crash.
rust-volume-server
Chris Lu 2 days ago
parent
commit
0e4d1ba1f4
  1. 4
      seaweed-volume/src/storage/erasure_coding/ec_volume.rs

4
seaweed-volume/src/storage/erasure_coding/ec_volume.rs

@ -749,6 +749,10 @@ impl EcVolume {
} }
*shard = None; *shard = None;
} }
// Sync .ecx before closing to flush in-place deletion marks (matches Go's ev.ecxFile.Sync())
if let Some(ref ecx_file) = self.ecx_file {
let _ = ecx_file.sync_all();
}
self.ecx_file = None; self.ecx_file = None;
self.ecj_file = None; self.ecj_file = None;
} }

Loading…
Cancel
Save