mirror of https://github.com/containers/podman.git
Only modify conmon cgroup if we have running containers
If there are no running containers - for example, if the pod was just created - the cgroup in question may not exist (under certain circumstances that we're not 100% sure about). However, regardless, we don't need to set a PID limit, as nothing will be making cleanup processes (no running conmon processes), so not changing the cgroup is safe regardless. Fixes #5072 Signed-off-by: Matthew Heon <matthew.heon@pm.me>
This commit is contained in:
parent
fc0673f561
commit
eed2ad9ef2
|
@ -193,8 +193,6 @@ func (r *Runtime) removePod(ctx context.Context, p *Pod, removeCtrs, force bool)
|
|||
}
|
||||
}
|
||||
|
||||
var removalErr error
|
||||
|
||||
// We're going to be removing containers.
|
||||
// If we are CGroupfs cgroup driver, to avoid races, we need to hit
|
||||
// the pod and conmon CGroups with a PID limit to prevent them from
|
||||
|
@ -205,7 +203,7 @@ func (r *Runtime) removePod(ctx context.Context, p *Pod, removeCtrs, force bool)
|
|||
conmonCgroupPath := filepath.Join(p.state.CgroupPath, "conmon")
|
||||
conmonCgroup, err := cgroups.Load(conmonCgroupPath)
|
||||
if err != nil && err != cgroups.ErrCgroupDeleted && err != cgroups.ErrCgroupV1Rootless {
|
||||
removalErr = errors.Wrapf(err, "error retrieving pod %s conmon cgroup %s", p.ID(), conmonCgroupPath)
|
||||
logrus.Errorf("Error retrieving pod %s conmon cgroup %s: %v", p.ID(), conmonCgroupPath, err)
|
||||
}
|
||||
|
||||
// New resource limits
|
||||
|
@ -216,15 +214,13 @@ func (r *Runtime) removePod(ctx context.Context, p *Pod, removeCtrs, force bool)
|
|||
// Don't try if we failed to retrieve the cgroup
|
||||
if err == nil {
|
||||
if err := conmonCgroup.Update(resLimits); err != nil {
|
||||
if removalErr == nil {
|
||||
removalErr = errors.Wrapf(err, "error updating pod %s conmon group", p.ID())
|
||||
} else {
|
||||
logrus.Errorf("Error updating pod %s conmon cgroup %s: %v", p.ID(), conmonCgroupPath, err)
|
||||
}
|
||||
logrus.Warnf("Error updating pod %s conmon cgroup %s PID limit: %v", p.ID(), conmonCgroupPath, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var removalErr error
|
||||
|
||||
ctrNamedVolumes := make(map[string]*ContainerNamedVolume)
|
||||
|
||||
// Second loop - all containers are good, so we should be clear to
|
||||
|
|
Loading…
Reference in New Issue