diff --git a/seaweed-volume/src/storage/store.rs b/seaweed-volume/src/storage/store.rs index ec10ce389..8f99ebb3d 100644 --- a/seaweed-volume/src/storage/store.rs +++ b/seaweed-volume/src/storage/store.rs @@ -383,6 +383,12 @@ impl Store { vid: VolumeId, n: &mut Needle, ) -> Result { + // 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) }