diff --git a/client/driver/java_test.go b/client/driver/java_test.go index ad8f5e578..eecfc0faf 100644 --- a/client/driver/java_test.go +++ b/client/driver/java_test.go @@ -179,7 +179,7 @@ func TestJavaDriver_Start_Kill_Wait(t *testing.T) { if err == nil { t.Fatal("should err") } - case <-time.After(2 * time.Second): + case <-time.After(8 * time.Second): t.Fatalf("timeout") } diff --git a/client/executor/exec_linux.go b/client/executor/exec_linux.go index be70379d2..35090be78 100644 --- a/client/executor/exec_linux.go +++ b/client/executor/exec_linux.go @@ -54,8 +54,7 @@ type LinuxExecutor struct { allocDir string // Spawn process. - spawn *spawn.Spawner - spawnState string + spawn *spawn.Spawner } func (e *LinuxExecutor) Command() *cmd { @@ -180,7 +179,7 @@ func (e *LinuxExecutor) Start() error { e.spawn.SetLogs(&spawn.Logs{ Stdout: filepath.Join(e.taskDir, allocdir.TaskLocal, fmt.Sprintf("%v.stdout", e.taskName)), Stderr: filepath.Join(e.taskDir, allocdir.TaskLocal, fmt.Sprintf("%v.stderr", e.taskName)), - Stdin: "/dev/null", + Stdin: os.DevNull, }) enterCgroup := func(pid int) error { @@ -309,13 +308,16 @@ func (e *LinuxExecutor) pathExists(path string) bool { // should be called when tearing down the task. func (e *LinuxExecutor) cleanTaskDir() error { // Unmount dev. - // TODO: This should check if it is a mount. errs := new(multierror.Error) dev := filepath.Join(e.taskDir, "dev") if e.pathExists(dev) { if err := syscall.Unmount(dev, 0); err != nil { errs = multierror.Append(errs, fmt.Errorf("Failed to unmount dev (%v): %v", dev, err)) } + + if err := os.RemoveAll(dev); err != nil { + errs = multierror.Append(errs, fmt.Errorf("Failed to delete dev directory (%v): %v", dev, err)) + } } // Unmount proc. @@ -324,6 +326,10 @@ func (e *LinuxExecutor) cleanTaskDir() error { if err := syscall.Unmount(proc, 0); err != nil { errs = multierror.Append(errs, fmt.Errorf("Failed to unmount proc (%v): %v", proc, err)) } + + if err := os.RemoveAll(proc); err != nil { + errs = multierror.Append(errs, fmt.Errorf("Failed to delete proc directory (%v): %v", dev, err)) + } } return errs.ErrorOrNil() diff --git a/client/spawn/spawn.go b/client/spawn/spawn.go index fa75b3940..4b9bb5ddc 100644 --- a/client/spawn/spawn.go +++ b/client/spawn/spawn.go @@ -225,10 +225,8 @@ func (s *Spawner) waitAsParent() (int, error) { } } - if state, err := s.spawn.Wait(); err != nil { + if _, err := s.spawn.Wait(); err != nil { return -1, err - } else if !state.Exited() { - return -1, fmt.Errorf("Task was killed or crashed") } return s.waitOnStatusFile()