mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-11 07:36:53 +00:00
fix: policy StringNotEquals double negation and delete_objects version mapping (#2015)
This commit is contained in:
@@ -2391,8 +2391,8 @@ impl DefaultObjectUsecase {
|
||||
let mut delete_results = vec![DeleteResult::default(); delete.objects.len()];
|
||||
|
||||
let mut object_to_delete = Vec::new();
|
||||
let mut object_to_delete_index = HashMap::new();
|
||||
let mut object_sizes = HashMap::new();
|
||||
let mut object_to_delete_idx = Vec::new();
|
||||
let mut object_sizes = Vec::new();
|
||||
for (idx, obj_id) in delete.objects.iter().enumerate() {
|
||||
let raw_version_id = obj_id.version_id.clone();
|
||||
let (version_id, version_uuid) = match normalize_delete_objects_version_id(raw_version_id.clone()) {
|
||||
@@ -2460,7 +2460,7 @@ impl DefaultObjectUsecase {
|
||||
continue;
|
||||
}
|
||||
|
||||
object_sizes.insert(object.object_name.clone(), goi.size);
|
||||
object_sizes.push(goi.size);
|
||||
|
||||
if is_dir_object(&object.object_name) && object.version_id.is_none() {
|
||||
object.version_id = Some(Uuid::nil());
|
||||
@@ -2490,7 +2490,7 @@ impl DefaultObjectUsecase {
|
||||
}
|
||||
}
|
||||
|
||||
object_to_delete_index.insert(object.object_name.clone(), idx);
|
||||
object_to_delete_idx.push(idx);
|
||||
object_to_delete.push(object);
|
||||
}
|
||||
|
||||
@@ -2532,11 +2532,7 @@ impl DefaultObjectUsecase {
|
||||
}
|
||||
|
||||
for (i, err) in errs.iter().enumerate() {
|
||||
let obj = dobjs[i].clone();
|
||||
|
||||
let Some(didx) = object_to_delete_index.get(&obj.object_name) else {
|
||||
continue;
|
||||
};
|
||||
let didx = object_to_delete_idx[i];
|
||||
|
||||
if err.is_none()
|
||||
|| err
|
||||
@@ -2546,15 +2542,16 @@ impl DefaultObjectUsecase {
|
||||
if replicate_deletes {
|
||||
dobjs[i].replication_state = Some(object_to_delete[i].replication_state());
|
||||
}
|
||||
delete_results[*didx].delete_object = Some(dobjs[i].clone());
|
||||
if let Some(&size) = object_sizes.get(&obj.object_name) {
|
||||
delete_results[didx].delete_object = Some(dobjs[i].clone());
|
||||
let size = object_sizes[i];
|
||||
if size > 0 {
|
||||
rustfs_ecstore::data_usage::decrement_bucket_usage_memory(&bucket, size as u64).await;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if let Some(err) = err.clone() {
|
||||
delete_results[*didx].error = Some(Error {
|
||||
delete_results[didx].error = Some(Error {
|
||||
code: Some(err.to_string()),
|
||||
key: Some(object_to_delete[i].object_name.clone()),
|
||||
message: Some(err.to_string()),
|
||||
|
||||
Reference in New Issue
Block a user