diff --git a/src/agent/src/mount.rs b/src/agent/src/mount.rs index 8a43179c13..1db16343ef 100644 --- a/src/agent/src/mount.rs +++ b/src/agent/src/mount.rs @@ -779,16 +779,20 @@ pub async fn add_storages( } }; - // Todo need to rollback the mounted storage if err met. - - if res.is_err() { - error!( - logger, - "add_storages failed, storage: {:?}, error: {:?} ", storage, res - ); - } - - let mount_point = res?; + let mount_point = match res { + Err(e) => { + error!( + logger, + "add_storages failed, storage: {:?}, error: {:?} ", storage, e + ); + let mut sb = sandbox.lock().await; + sb.unset_sandbox_storage(&storage.mount_point) + .map_err(|e| warn!(logger, "fail to unset sandbox storage {:?}", e)) + .ok(); + return Err(e); + } + Ok(m) => m, + }; if !mount_point.is_empty() { mount_list.push(mount_point);