From 12d923ed1583ac5cbec8d98003c7e08de5d1e9fd Mon Sep 17 00:00:00 2001 From: Erick Fejta Date: Wed, 27 Jul 2016 21:53:05 +0530 Subject: [PATCH] Revert "Fix killing child sudo process in e2e_node tests" --- test/e2e_node/e2e_service.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/test/e2e_node/e2e_service.go b/test/e2e_node/e2e_service.go index 0ebb027071815..db56e15cf9a30 100644 --- a/test/e2e_node/e2e_service.go +++ b/test/e2e_node/e2e_service.go @@ -26,6 +26,7 @@ import ( "os/exec" "path" "path/filepath" + "reflect" "strconv" "strings" "syscall" @@ -294,6 +295,18 @@ func (es *e2eService) startServer(cmd *healthCheckCommand) error { cmd.Cmd.Stdout = outfile cmd.Cmd.Stderr = outfile + // Killing the sudo command should kill the server as well. + attrs := &syscall.SysProcAttr{} + // Hack to set linux-only field without build tags. + deathSigField := reflect.ValueOf(attrs).Elem().FieldByName("Pdeathsig") + if deathSigField.IsValid() { + deathSigField.Set(reflect.ValueOf(syscall.SIGKILL)) + } else { + cmdErrorChan <- fmt.Errorf("Failed to set Pdeathsig field (non-linux build)") + return + } + cmd.Cmd.SysProcAttr = attrs + // Run the command err = cmd.Run() if err != nil { @@ -359,10 +372,7 @@ func (k *killCmd) Kill() error { const timeout = 10 * time.Second for _, signal := range []string{"-TERM", "-KILL"} { glog.V(2).Infof("Killing process %d (%s) with %s", pid, name, signal) - cmd := exec.Command("sudo", "kill", signal, strconv.Itoa(pid)) - // Run the 'kill' command in a separate process group so sudo doesn't ignore it - cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} - _, err := cmd.Output() + _, err := exec.Command("sudo", "kill", signal, strconv.Itoa(pid)).Output() if err != nil { glog.Errorf("Error signaling process %d (%s) with %s: %v", pid, name, signal, err) continue