mirror of
https://github.com/aljazceru/kata-containers.git
synced 2026-01-25 17:24:38 +01:00
Shutdown API relies on it being cleaned up in order to proceed. Otherwise it fails silently and shimv2 process never quits. This can be triggered by killing the vmm while pod is running. Fixes: #2345 Signed-off-by: Peng Tao <bergwolf@hyper.sh>
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
// Copyright (c) 2018 HyperHQ Inc.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package containerdshim
|
|
|
|
import (
|
|
"context"
|
|
"path"
|
|
|
|
"github.com/containerd/containerd/mount"
|
|
"github.com/kata-containers/runtime/pkg/katautils"
|
|
"github.com/kata-containers/runtime/virtcontainers/types"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func deleteContainer(ctx context.Context, s *service, c *container) error {
|
|
status, err := s.sandbox.StatusContainer(c.id)
|
|
if err != nil && !isNotFound(err) {
|
|
return err
|
|
}
|
|
if !c.cType.IsSandbox() && err == nil {
|
|
if status.State.State != types.StateStopped {
|
|
_, err = s.sandbox.StopContainer(c.id, false)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if _, err = s.sandbox.DeleteContainer(c.id); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// Run post-stop OCI hooks.
|
|
if err := katautils.PostStopHooks(ctx, *c.spec, s.sandbox.ID(), c.bundle); err != nil {
|
|
return err
|
|
}
|
|
|
|
if s.mount {
|
|
rootfs := path.Join(c.bundle, "rootfs")
|
|
if err := mount.UnmountAll(rootfs, 0); err != nil {
|
|
logrus.WithError(err).Warn("failed to cleanup rootfs mount")
|
|
}
|
|
}
|
|
|
|
delete(s.containers, c.id)
|
|
|
|
return nil
|
|
}
|