Removing Windows servicing containers

Signed-off-by: Darren Stahl <darst@microsoft.com>
This commit is contained in:
Darren Stahl 2018-02-20 16:56:13 -08:00
parent 002cabade8
commit 243467aa96
2 changed files with 2 additions and 56 deletions

View File

@ -23,7 +23,6 @@ import (
"github.com/containerd/typeurl" "github.com/containerd/typeurl"
specs "github.com/opencontainers/runtime-spec/specs-go" specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus"
) )
const ( const (
@ -146,23 +145,11 @@ func (r *windowsRuntime) Delete(ctx context.Context, t runtime.Task) (*runtime.E
// TODO(mlaventure): stop monitor on this task // TODO(mlaventure): stop monitor on this task
var ( var (
err error err error
needServicing bool state, _ = wt.State(ctx)
state, _ = wt.State(ctx)
) )
switch state.Status { switch state.Status {
case runtime.StoppedStatus: case runtime.StoppedStatus:
// Only try to service a container if it was started and it's not a
// servicing task itself
if wt.servicing == false {
needServicing, err = wt.hcsContainer.HasPendingUpdates()
if err != nil {
needServicing = false
log.G(ctx).WithError(err).
WithFields(logrus.Fields{"id": wt.id, "pid": wt.pid}).
Error("failed to check if container needs servicing")
}
}
fallthrough fallthrough
case runtime.CreatedStatus: case runtime.CreatedStatus:
// if it's stopped or in created state, we need to shutdown the // if it's stopped or in created state, we need to shutdown the
@ -206,13 +193,6 @@ func (r *windowsRuntime) Delete(ctx context.Context, t runtime.Task) (*runtime.E
ExitedAt: rtExit.Timestamp, ExitedAt: rtExit.Timestamp,
}) })
if needServicing {
ns, _ := namespaces.Namespace(ctx)
serviceCtx := log.WithLogger(context.Background(), log.GetLogger(ctx))
serviceCtx = namespaces.WithNamespace(serviceCtx, ns)
r.serviceTask(serviceCtx, ns, wt.id+"_servicing", wt.rootfs, wt.spec)
}
if err := mount.UnmountAll(wt.rootfs[0].Source, 0); err != nil { if err := mount.UnmountAll(wt.rootfs[0].Source, 0); err != nil {
log.G(ctx).WithError(err).WithField("path", wt.rootfs[0].Source). log.G(ctx).WithError(err).WithField("path", wt.rootfs[0].Source).
Warn("failed to unmount rootfs on failure") Warn("failed to unmount rootfs on failure")
@ -357,36 +337,3 @@ func (r *windowsRuntime) cleanup(ctx context.Context) {
container.Close() container.Close()
} }
} }
func (r *windowsRuntime) serviceTask(ctx context.Context, namespace, id string, rootfs []mount.Mount, spec *specs.Spec) {
var (
err error
t *task
io runtime.IO
createOpts = &hcsshimtypes.CreateOptions{
TerminateDuration: defaultTerminateDuration,
}
)
t, err = r.newTask(ctx, namespace, id, rootfs, spec, io, createOpts)
if err != nil {
log.G(ctx).WithError(err).WithField("id", id).
Warn("failed to created servicing task")
return
}
t.servicing = true
err = t.Start(ctx)
switch err {
case nil:
<-t.getProcess(id).exitCh
default:
log.G(ctx).WithError(err).WithField("id", id).
Warn("failed to start servicing task")
}
if _, err = r.Delete(ctx, t); err != nil {
log.G(ctx).WithError(err).WithField("id", id).
Warn("failed to stop servicing task")
}
}

View File

@ -39,7 +39,6 @@ type task struct {
pidPool *pidPool pidPool *pidPool
hcsContainer hcsshim.Container hcsContainer hcsshim.Container
terminateDuration time.Duration terminateDuration time.Duration
servicing bool
} }
func (t *task) ID() string { func (t *task) ID() string {