support concurrency write

Signed-off-by: junxiang Mu <1948535941@qq.com>
This commit is contained in:
junxiang Mu
2025-04-24 08:12:57 +00:00
parent 08d0021cd6
commit b2da8148bd
4 changed files with 52 additions and 39 deletions
+22 -17
View File
@@ -325,6 +325,7 @@ impl SetDisks {
}
}
let mut futures = Vec::with_capacity(disks.len());
if let Some(err) = reduce_write_quorum_errs(&errs, object_op_ignored_errs().as_ref(), write_quorum) {
// TODO: 并发
for (i, err) in errs.iter().enumerate() {
@@ -334,26 +335,30 @@ impl SetDisks {
if let Some(disk) = disks[i].as_ref() {
let fi = file_infos[i].clone();
let _ = disk
.delete_version(
src_bucket,
src_object,
fi,
false,
DeleteOptions {
undo_write: true,
old_data_dir: data_dirs[i],
..Default::default()
},
)
.await
.map_err(|e| {
debug!("rename_data delete_version err {:?}", e);
e
});
let old_data_dir = data_dirs[i];
futures.push(async move {
let _ = disk
.delete_version(
src_bucket,
src_object,
fi,
false,
DeleteOptions {
undo_write: true,
old_data_dir: old_data_dir,
..Default::default()
},
)
.await
.map_err(|e| {
debug!("rename_data delete_version err {:?}", e);
e
});
});
}
}
let _ = join_all(futures).await;
return Err(err);
}