Browse Source

Match Go DeleteVolumeNeedle: check noWriteOrDelete before allowing delete

Go checks v.noWriteOrDelete before proceeding with needle deletion,
returning "volume is read only" if true. Rust was skipping this check.
rust-volume-server
Chris Lu 3 days ago
parent
commit
ecf2f2c35f
  1. 6
      seaweed-volume/src/storage/store.rs

6
seaweed-volume/src/storage/store.rs

@ -383,6 +383,12 @@ impl Store {
vid: VolumeId,
n: &mut Needle,
) -> Result<Size, VolumeError> {
// Match Go's DeleteVolumeNeedle: check noWriteOrDelete before proceeding.
let (_, vol) = self.find_volume(vid).ok_or(VolumeError::NotFound)?;
if vol.is_no_write_or_delete() {
return Err(VolumeError::ReadOnly);
}
let (_, vol) = self.find_volume_mut(vid).ok_or(VolumeError::NotFound)?;
vol.delete_needle(n)
}

Loading…
Cancel
Save