diff --git a/crates/ecstore/src/set_disk/core/io_primitives.rs b/crates/ecstore/src/set_disk/core/io_primitives.rs index 5f4471f13..41bd6dac7 100644 --- a/crates/ecstore/src/set_disk/core/io_primitives.rs +++ b/crates/ecstore/src/set_disk/core/io_primitives.rs @@ -3021,14 +3021,11 @@ impl SetDisks { }); } - let (ress, errors) = match collect_read_multiple_results(futures, read_quorum).await { + let (ress, _errors) = match collect_read_multiple_results(futures, read_quorum).await { Ok(collected) => collected, Err(()) => return empty_quorum_result(), }; - // debug!("ReadMultipleResp ress {:?}", ress); - // debug!("ReadMultipleResp errors {:?}", errors); - let mut ret = Vec::with_capacity(req.files.len()); for want in req.files.iter() { diff --git a/crates/ecstore/src/set_disk/ops/heal.rs b/crates/ecstore/src/set_disk/ops/heal.rs index 24c46a7f5..274b33f43 100644 --- a/crates/ecstore/src/set_disk/ops/heal.rs +++ b/crates/ecstore/src/set_disk/ops/heal.rs @@ -453,7 +453,9 @@ impl SetDisks { ..Default::default() }; - let write_lock_guard = if !opts.no_lock { + // Bound, not `_`: this guard must live to the end of the scope. A bare + // `_` would drop it here and release the namespace write lock. + let _write_lock_guard = if !opts.no_lock { let ns_lock = self.new_ns_lock(bucket, object).await?; Some( ns_lock @@ -996,7 +998,7 @@ impl SetDisks { readers.push(None); continue; } - Err(e) => { + Err(_e) => { readers.push(None); continue; } @@ -1545,6 +1547,9 @@ impl SetDisks { for candidate in candidates.iter_mut().filter(|candidate| candidate.local_payload) { for (disk_index, disk) in disks.iter().enumerate() { + // Only the #[cfg(test)] fault-injection branch below reads this. + #[cfg(not(test))] + let _ = disk_index; let Some(disk) = disk else { return Ok(DanglingDeleteSafety::UnsafeToDelete); }; diff --git a/crates/ecstore/src/set_disk/ops/multipart.rs b/crates/ecstore/src/set_disk/ops/multipart.rs index 86bb41737..35be8062c 100644 --- a/crates/ecstore/src/set_disk/ops/multipart.rs +++ b/crates/ecstore/src/set_disk/ops/multipart.rs @@ -1400,7 +1400,7 @@ impl crate::storage_api_contracts::multipart::MultipartOperations for SetDisks { let mut count = max_parts; - for (i, part) in object_parts.iter().enumerate() { + for part in object_parts.iter() { if let Some(err) = &part.error { warn!("list_object_parts part error: {:?}", &err); } @@ -2043,8 +2043,8 @@ impl crate::storage_api_contracts::multipart::MultipartOperations for SetDisks { && let Err(err) = checksum.add_part(&cs, ext_part.actual_size) { error!( - "complete_multipart_upload checksum add_part failed part_id={}, bucket={}, object={}", - p.part_num, bucket, object + "complete_multipart_upload checksum add_part failed part_id={}, bucket={}, object={}, err={}", + p.part_num, bucket, object, err ); return Err(Error::InvalidPart(p.part_num, ext_part.etag.clone(), p.etag.clone().unwrap_or_default())); } @@ -2089,8 +2089,8 @@ impl crate::storage_api_contracts::multipart::MultipartOperations for SetDisks { } } else if let Err(err) = wtcs.matches(&checksum_combined, uploaded_parts.len() as i32) { error!( - "complete_multipart_upload checksum matches failed want={}, got={}", - wtcs.encoded, checksum.encoded + "complete_multipart_upload checksum matches failed want={}, got={}, err={}", + wtcs.encoded, checksum.encoded, err ); return Err(Error::other(format!( "complete_multipart_upload checksum matches failed want={}, got={}", diff --git a/crates/ecstore/src/set_disk/ops/object.rs b/crates/ecstore/src/set_disk/ops/object.rs index 670397c12..e7498ee9d 100644 --- a/crates/ecstore/src/set_disk/ops/object.rs +++ b/crates/ecstore/src/set_disk/ops/object.rs @@ -5656,7 +5656,9 @@ impl crate::storage_api_contracts::object::ObjectOperations for SetDisks { // TODO: Lifecycle let mut version_found = true; - let (mut goi, write_quorum, gerr) = self.get_object_info_and_quorum(bucket, object, &opts).await; + // delete_object_version below derives its own majority quorum from the + // disk array, so the object-derived quorum here is unused. + let (mut goi, _write_quorum, gerr) = self.get_object_info_and_quorum(bucket, object, &opts).await; if let Some(err) = &gerr && goi.name.is_empty() { @@ -6410,7 +6412,7 @@ impl crate::storage_api_contracts::object::ObjectOperations for SetDisks { self.record_capacity_scope_if_needed(opts.capacity_scope_token, &disks); for disk in disks.iter() { - if let Some(disk) = disk { + if disk.is_some() { continue; } let _ = self