runtime-rs: fix the issue of delete cgroup failed

When try to delete a cgroup, it's needed to move all of the
tasks/procs in the cgroup into root cgroup and then delete it.

Since for cgroup v2, it doesn't  support to move thread into
root cgroup, thus move the processes instead of moving tasks
can fix this issue.

Signed-off-by: Fupan Li <fupan.lfp@antgroup.com>
This commit is contained in:
Fupan Li 2025-05-22 12:05:27 +08:00
parent 9356ed59d5
commit 15cbc545ca

View File

@ -123,11 +123,11 @@ impl CgroupsResource {
/// delete will move the running processes in the cgroup_manager and
/// overhead_cgroup_manager to the parent and then delete the cgroups.
pub async fn delete(&self) -> Result<()> {
for cg_pid in self.cgroup_manager.tasks() {
// For now, we can't guarantee that the thread in cgroup_manager does still
// exist. Once it exit, we should ignore that error returned by remove_task
for cg_pid in self.cgroup_manager.procs() {
// For now, we can't guarantee that the process in cgroup_manager does still
// exist. Once it exit, we should ignore that error returned by remove_task_by_tgid
// to let it go.
if let Err(error) = self.cgroup_manager.remove_task(cg_pid) {
if let Err(error) = self.cgroup_manager.remove_task_by_tgid(cg_pid) {
match error.source() {
Some(err) => match err.downcast_ref::<io::Error>() {
Some(e) => {