diff --git a/pkg/app/master/command/debug/handle_containerd_runtime.go b/pkg/app/master/command/debug/handle_containerd_runtime.go index 787cc9c0..d45ef3ec 100644 --- a/pkg/app/master/command/debug/handle_containerd_runtime.go +++ b/pkg/app/master/command/debug/handle_containerd_runtime.go @@ -332,8 +332,16 @@ func HandleContainerdRuntime( logger.WithError(err).Error("api.NewContainer") xc.FailOn(err) } + defer debugContainer.Delete(ctx, containerd.WithSnapshotCleanup) + xc.AddCleanupHandler(func() { + logger.Trace("xc.cleanup") + if err := debugContainer.Delete(ctx, containerd.WithSnapshotCleanup); err != nil { + logger.Debugf("failed to delete container: %v", err) + } + }) + ioc, con, err := prepareTaskIO(ctx, doTTY, true, debugContainer) if err != nil { logger.WithError(err).Error("prepareTaskIO") @@ -341,6 +349,11 @@ func HandleContainerdRuntime( } if con != nil { defer con.Reset() + + xc.AddCleanupHandler(func() { + logger.Trace("xc.cleanup") + con.Reset() + }) } task, err := debugContainer.NewTask(ctx, ioc) diff --git a/pkg/app/master/command/debug/handler.go b/pkg/app/master/command/debug/handler.go index 2afdc489..6d273341 100644 --- a/pkg/app/master/command/debug/handler.go +++ b/pkg/app/master/command/debug/handler.go @@ -32,6 +32,17 @@ func OnCommand( cmdReport := report.NewDebugCommand(gparams.ReportLocation, gparams.InContainer) cmdReport.State = cmd.StateStarted + cmdReportOnExit := func() { + cmdReport.State = cmd.StateError + if cmdReport.Save() { + xc.Out.Info("report", + ovars{ + "file": cmdReport.ReportLocation(), + }) + } + } + xc.AddCleanupHandler(cmdReportOnExit) + xc.Out.State("started") paramVars := ovars{ "runtime": commandParams.Runtime,