mirror of
https://github.com/containers/podman.git
synced 2025-10-25 18:25:59 +08:00
Remove conmon cgroup before pod cgroup for cgroupfs
For pods using cgroupfs, we were seeing some error messages in CI from an inability to remove the pod CGroup, which was traced down to the conmon cgroup still being present as a child. Try to remove these error messages and ensure successful CGroup deletion by removing the conmon CGroup first, then the pod cgroup. Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
This commit is contained in:
@ -265,15 +265,26 @@ func (r *Runtime) removePod(ctx context.Context, p *Pod, removeCtrs, force bool)
|
|||||||
}
|
}
|
||||||
case CgroupfsCgroupsManager:
|
case CgroupfsCgroupsManager:
|
||||||
// Delete the cgroupfs cgroup
|
// Delete the cgroupfs cgroup
|
||||||
|
// Make sure the conmon cgroup is deleted first
|
||||||
|
// Since the pod is almost gone, don't bother failing
|
||||||
|
// hard - instead, just log errors.
|
||||||
v1CGroups := GetV1CGroups(getExcludedCGroups())
|
v1CGroups := GetV1CGroups(getExcludedCGroups())
|
||||||
|
conmonCgroupPath := filepath.Join(p.state.CgroupPath, "conmon")
|
||||||
|
conmonCgroup, err := cgroups.Load(v1CGroups, cgroups.StaticPath(conmonCgroupPath))
|
||||||
|
if err != nil && err != cgroups.ErrCgroupDeleted {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
if err := conmonCgroup.Delete(); err != nil {
|
||||||
|
logrus.Errorf("Error deleting pod %s conmon cgroup %s: %v", p.ID(), conmonCgroupPath, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
cgroup, err := cgroups.Load(v1CGroups, cgroups.StaticPath(p.state.CgroupPath))
|
cgroup, err := cgroups.Load(v1CGroups, cgroups.StaticPath(p.state.CgroupPath))
|
||||||
if err != nil && err != cgroups.ErrCgroupDeleted {
|
if err != nil && err != cgroups.ErrCgroupDeleted {
|
||||||
return err
|
return err
|
||||||
} else if err == nil {
|
}
|
||||||
|
if err == nil {
|
||||||
if err := cgroup.Delete(); err != nil {
|
if err := cgroup.Delete(); err != nil {
|
||||||
// The pod is already almost gone.
|
|
||||||
// No point in hard-failing if we fail
|
|
||||||
// this bit of cleanup.
|
|
||||||
logrus.Errorf("Error deleting pod %s cgroup %s: %v", p.ID(), p.state.CgroupPath, err)
|
logrus.Errorf("Error deleting pod %s cgroup %s: %v", p.ID(), p.state.CgroupPath, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user