Merge pull request #6399 from yipengyin/fix-cleanup

fix(runtime-rs): add exited state to ensure cleanup
This commit is contained in:
Zhongtao Hu 2023-03-03 17:41:16 +08:00 committed by GitHub
commit 60bb9d114a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 12 deletions

View File

@ -184,6 +184,7 @@ pub enum ProcessStatus {
Stopped = 3,
Paused = 4,
Pausing = 5,
Exited = 6,
}
#[derive(Debug, Clone)]

View File

@ -56,6 +56,7 @@ impl From<ProcessStatus> for api::Status {
ProcessStatus::Stopped => api::Status::STOPPED,
ProcessStatus::Paused => api::Status::PAUSED,
ProcessStatus::Pausing => api::Status::PAUSING,
ProcessStatus::Exited => api::Status::STOPPED,
}
}
}

View File

@ -200,10 +200,11 @@ impl ContainerInner {
return Ok(());
}
self.check_state(vec![ProcessStatus::Running])
self.check_state(vec![ProcessStatus::Running, ProcessStatus::Exited])
.await
.context("check state")?;
if state == ProcessStatus::Running {
// if use force mode to stop container, stop always successful
// send kill signal to container
// ignore the error of sending signal, since the process would
@ -214,6 +215,7 @@ impl ContainerInner {
warn!(logger, "failed to signal kill. {:?}", e);
})
.ok();
}
match process.process_type {
ProcessType::Container => self

View File

@ -182,7 +182,7 @@ impl Process {
drop(exit_status);
let mut status = status.write().await;
*status = ProcessStatus::Stopped;
*status = ProcessStatus::Exited;
drop(status);
drop(exit_notifier);