diff --git a/client/driver/executor/executor_linux.go b/client/driver/executor/executor_linux.go index 988142e8aa2..5c303c6d6a1 100644 --- a/client/driver/executor/executor_linux.go +++ b/client/driver/executor/executor_linux.go @@ -196,6 +196,9 @@ func DestroyCgroup(groups *cgroupConfig.Cgroup) error { manager := getCgroupManager(groups) if pids, perr := manager.GetPids(); perr == nil { for _, pid := range pids { + // If the pid is the pid of the executor then we don't kill it, the + // executor is going to be killed by the driver once the Wait + // returns if pid == os.Getpid() { continue } diff --git a/client/driver/executor/executor_test.go b/client/driver/executor/executor_test.go index 072a9336c93..2c45d0b458a 100644 --- a/client/driver/executor/executor_test.go +++ b/client/driver/executor/executor_test.go @@ -156,7 +156,7 @@ func TestExecutor_DestroyCgroup(t *testing.T) { ctx := testExecutorContext(t) ctx.LogConfig.MaxFiles = 1 ctx.LogConfig.MaxFileSizeMB = 300 - //defer ctx.AllocDir.Destroy() + defer ctx.AllocDir.Destroy() ctx.FSIsolation = true ctx.ResourceLimits = true @@ -170,12 +170,6 @@ func TestExecutor_DestroyCgroup(t *testing.T) { if ps.Pid == 0 { t.Fatalf("expected process to start and have non zero pid") } - go func() { - _, err = executor.Wait() - if err != nil { - t.Fatalf("error in waiting for command: %v", err) - } - }() time.Sleep(200 * time.Millisecond) executor.Exit() file := filepath.Join(ctx.AllocDir.LogDir(), "web.stdout.0")