The task_dir successfully cleans when the file is absent

Signed-off-by: fengwei0328 <feng.wei8@zte.com.cn>
This commit is contained in:
fengwei0328 2024-11-22 14:26:37 +08:00 committed by Maksym Pavlenko
parent 7051e312f5
commit 1e17e1495e
2 changed files with 9 additions and 2 deletions

View File

@ -108,7 +108,7 @@ impl Shim for Service {
let namespace = self.namespace.as_str(); let namespace = self.namespace.as_str();
let bundle = current_dir().map_err(io_error!(e, "get current dir"))?; let bundle = current_dir().map_err(io_error!(e, "get current dir"))?;
let opts = read_options(&bundle).await?; let opts = read_options(&bundle).await?;
let runtime = read_runtime(&bundle).await?; let runtime = read_runtime(&bundle).await.unwrap_or_default();
let runc = create_runc( let runc = create_runc(
&runtime, &runtime,
@ -117,7 +117,9 @@ impl Shim for Service {
&opts, &opts,
Some(Arc::new(ShimExecutor::default())), Some(Arc::new(ShimExecutor::default())),
)?; )?;
let pid = read_pid_from_file(&bundle.join(INIT_PID_FILE)).await?; let pid = read_pid_from_file(&bundle.join(INIT_PID_FILE))
.await
.unwrap_or_default();
runc.delete(&self.id, Some(&DeleteOpts { force: true })) runc.delete(&self.id, Some(&DeleteOpts { force: true }))
.await .await

View File

@ -99,8 +99,13 @@ pub async fn read_spec(bundle: impl AsRef<Path>) -> Result<Spec> {
serde_json::from_str::<Spec>(content.as_str()).map_err(other_error!("read spec")) serde_json::from_str::<Spec>(content.as_str()).map_err(other_error!("read spec"))
} }
// read_options reads the option information from the path.
// When the file does not exist, read_options returns nil without an error.
pub async fn read_options(bundle: impl AsRef<Path>) -> Result<Options> { pub async fn read_options(bundle: impl AsRef<Path>) -> Result<Options> {
let path = bundle.as_ref().join(OPTIONS_FILE_NAME); let path = bundle.as_ref().join(OPTIONS_FILE_NAME);
if !path.exists() {
return Ok(Options::default());
}
let opts_str = read_file_to_str(path).await?; let opts_str = read_file_to_str(path).await?;
let opts = let opts =
serde_json::from_str::<JsonOptions>(&opts_str).map_err(other_error!("read options"))?; serde_json::from_str::<JsonOptions>(&opts_str).map_err(other_error!("read options"))?;