Merge branch 'r-executor-plugin' of github.com:hashicorp/nomad into r-executor-plugin

This commit is contained in:
Diptanu Choudhury 2016-02-09 10:17:44 -08:00
commit 0120aceb49
2 changed files with 10 additions and 3 deletions

View file

@ -369,9 +369,10 @@ func TestExecDriver_Start_Kill_Wait(t *testing.T) {
Name: "sleep", Name: "sleep",
Config: map[string]interface{}{ Config: map[string]interface{}{
"command": "/bin/sleep", "command": "/bin/sleep",
"args": []string{"45"}, "args": []string{"100"},
}, },
Resources: basicResources, Resources: basicResources,
KillTimeout: 10 * time.Second,
} }
driverCtx, execCtx := testDriverContexts(task) driverCtx, execCtx := testDriverContexts(task)

View file

@ -193,6 +193,12 @@ func (e *UniversalExecutor) wait() {
e.exitState = &ProcessState{Pid: 0, ExitCode: exitCode, Time: time.Now()} e.exitState = &ProcessState{Pid: 0, ExitCode: exitCode, Time: time.Now()}
} }
var (
// finishedErr is the error message received when trying to kill and already
// exited process.
finishedErr = "os: process already finished"
)
// Exit cleans up the alloc directory, destroys cgroups and kills the user // Exit cleans up the alloc directory, destroys cgroups and kills the user
// process // process
func (e *UniversalExecutor) Exit() error { func (e *UniversalExecutor) Exit() error {
@ -202,7 +208,7 @@ func (e *UniversalExecutor) Exit() error {
if err != nil { if err != nil {
e.logger.Printf("[ERROR] executor: can't find process with pid: %v, err: %v", e.logger.Printf("[ERROR] executor: can't find process with pid: %v, err: %v",
e.cmd.Process.Pid, err) e.cmd.Process.Pid, err)
} else if err := proc.Kill(); err != nil { } else if err := proc.Kill(); err != nil && err.Error() != finishedErr {
merr.Errors = append(merr.Errors, merr.Errors = append(merr.Errors,
fmt.Errorf("can't kill process with pid: %v, err: %v", e.cmd.Process.Pid, err)) fmt.Errorf("can't kill process with pid: %v, err: %v", e.cmd.Process.Pid, err))
} }