From 5c0518f201673878e7241518ba56d28beea8b2da Mon Sep 17 00:00:00 2001 From: kaleidoscope416 <2448956191@qq.com> Date: Thu, 12 Jun 2025 18:26:36 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E4=BA=86?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=BB=BB=E5=8A=A1=E5=89=8Dsnapshot=E8=A2=AB?= =?UTF-8?q?=E5=9B=9E=E6=94=B6=E7=9A=84bug=20(#110)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Samuka007 --- .../src/provider/function/deploy.rs | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/crates/faas-containerd/src/provider/function/deploy.rs b/crates/faas-containerd/src/provider/function/deploy.rs index 2d8344a..3ac0609 100644 --- a/crates/faas-containerd/src/provider/function/deploy.rs +++ b/crates/faas-containerd/src/provider/function/deploy.rs @@ -24,25 +24,6 @@ impl ContainerdProvider { })?; log::trace!("Image '{}' fetch ok", &metadata.image); - let mounts = backend().prepare_snapshot(&metadata).await.map_err(|e| { - log::error!("Failed to prepare snapshot: {:?}", e); - DeployError::InternalError(e.to_string()) - })?; - - let snapshot_defer = scopeguard::guard((), |()| { - log::trace!("Cleaning up snapshot"); - let endpoint = metadata.endpoint.clone(); - tokio::spawn(async move { backend().remove_snapshot(&endpoint).await }); - }); - - // let network = CNIEndpoint::new(&metadata.container_id, &metadata.namespace)?; - let (ip, netns) = cni::cni_impl::create_cni_network(&metadata.endpoint).map_err(|e| { - log::error!("Failed to create CNI network: {}", e); - DeployError::InternalError(e.to_string()) - })?; - - let netns_defer = guard(netns, |ns| ns.remove().unwrap()); - let _ = backend().create_container(&metadata).await.map_err(|e| { log::error!("Failed to create container: {:?}", e); DeployError::InternalError(e.to_string()) @@ -53,8 +34,26 @@ impl ContainerdProvider { tokio::spawn(async move { backend().delete_container(&endpoint).await }); }); + // let network = CNIEndpoint::new(&metadata.container_id, &metadata.namespace)?; + let (ip, netns) = cni::cni_impl::create_cni_network(&metadata.endpoint).map_err(|e| { + log::error!("Failed to create CNI network: {}", e); + DeployError::InternalError(e.to_string()) + })?; + + let netns_defer = guard(netns, |ns| ns.remove().unwrap()); + // TODO: Use ostree-ext // let img_conf = BACKEND.get().unwrap().get_runtime_config(&metadata.image).unwrap(); + let mounts = backend().prepare_snapshot(&metadata).await.map_err(|e| { + log::error!("Failed to prepare snapshot: {:?}", e); + DeployError::InternalError(e.to_string()) + })?; + + let snapshot_defer = scopeguard::guard((), |()| { + log::trace!("Cleaning up snapshot"); + let endpoint = metadata.endpoint.clone(); + tokio::spawn(async move { backend().remove_snapshot(&endpoint).await }); + }); backend().new_task(mounts, &metadata.endpoint).await?;