diff --git a/pkg/server/container_stop.go b/pkg/server/container_stop.go index f2a27f06b..6fd49aa95 100644 --- a/pkg/server/container_stop.go +++ b/pkg/server/container_stop.go @@ -69,7 +69,11 @@ func (c *criContainerdService) StopContainer(ctx context.Context, r *runtime.Sto // TODO(random-liu): [P1] Get stop signal from image config. stopSignal := unix.SIGTERM glog.V(2).Infof("Stop container %q with signal %v", id, stopSignal) - _, err = c.taskService.Kill(ctx, &execution.KillRequest{ContainerID: id, Signal: uint32(stopSignal)}) + _, err = c.taskService.Kill(ctx, &execution.KillRequest{ + ContainerID: id, + Signal: uint32(stopSignal), + PidOrAll: &execution.KillRequest_All{All: true}, + }) if err != nil { if !isContainerdGRPCNotFoundError(err) && !isRuncProcessAlreadyFinishedError(err) { return nil, fmt.Errorf("failed to stop container %q: %v", id, err) @@ -86,7 +90,11 @@ func (c *criContainerdService) StopContainer(ctx context.Context, r *runtime.Sto // Event handler will Delete the container from containerd after it handles the Exited event. glog.V(2).Infof("Kill container %q", id) - _, err = c.taskService.Kill(ctx, &execution.KillRequest{ContainerID: id, Signal: uint32(unix.SIGKILL)}) + _, err = c.taskService.Kill(ctx, &execution.KillRequest{ + ContainerID: id, + Signal: uint32(unix.SIGKILL), + PidOrAll: &execution.KillRequest_All{All: true}, + }) if err != nil { if !isContainerdGRPCNotFoundError(err) && !isRuncProcessAlreadyFinishedError(err) { return nil, fmt.Errorf("failed to kill container %q: %v", id, err) diff --git a/pkg/server/container_stop_test.go b/pkg/server/container_stop_test.go index 294307dea..8bfe30a10 100644 --- a/pkg/server/container_stop_test.go +++ b/pkg/server/container_stop_test.go @@ -137,12 +137,20 @@ func TestStopContainer(t *testing.T) { expectErr: false, expectCalls: []servertesting.CalledDetail{ { - Name: "kill", - Argument: &execution.KillRequest{ContainerID: testID, Signal: uint32(unix.SIGTERM)}, + Name: "kill", + Argument: &execution.KillRequest{ + ContainerID: testID, + Signal: uint32(unix.SIGTERM), + PidOrAll: &execution.KillRequest_All{All: true}, + }, }, { - Name: "kill", - Argument: &execution.KillRequest{ContainerID: testID, Signal: uint32(unix.SIGKILL)}, + Name: "kill", + Argument: &execution.KillRequest{ + ContainerID: testID, + Signal: uint32(unix.SIGKILL), + PidOrAll: &execution.KillRequest_All{All: true}, + }, }, { Name: "delete", @@ -157,12 +165,20 @@ func TestStopContainer(t *testing.T) { expectErr: false, expectCalls: []servertesting.CalledDetail{ { - Name: "kill", - Argument: &execution.KillRequest{ContainerID: testID, Signal: uint32(unix.SIGTERM)}, + Name: "kill", + Argument: &execution.KillRequest{ + ContainerID: testID, + Signal: uint32(unix.SIGTERM), + PidOrAll: &execution.KillRequest_All{All: true}, + }, }, { - Name: "kill", - Argument: &execution.KillRequest{ContainerID: testID, Signal: uint32(unix.SIGKILL)}, + Name: "kill", + Argument: &execution.KillRequest{ + ContainerID: testID, + Signal: uint32(unix.SIGKILL), + PidOrAll: &execution.KillRequest_All{All: true}, + }, }, { Name: "delete", @@ -177,8 +193,12 @@ func TestStopContainer(t *testing.T) { expectErr: true, expectCalls: []servertesting.CalledDetail{ { - Name: "kill", - Argument: &execution.KillRequest{ContainerID: testID, Signal: uint32(unix.SIGTERM)}, + Name: "kill", + Argument: &execution.KillRequest{ + ContainerID: testID, + Signal: uint32(unix.SIGTERM), + PidOrAll: &execution.KillRequest_All{All: true}, + }, }, }, }, @@ -189,8 +209,12 @@ func TestStopContainer(t *testing.T) { // deleted by the event monitor. expectCalls: []servertesting.CalledDetail{ { - Name: "kill", - Argument: &execution.KillRequest{ContainerID: testID, Signal: uint32(unix.SIGTERM)}, + Name: "kill", + Argument: &execution.KillRequest{ + ContainerID: testID, + Signal: uint32(unix.SIGTERM), + PidOrAll: &execution.KillRequest_All{All: true}, + }, }, { Name: "delete", @@ -205,8 +229,12 @@ func TestStopContainer(t *testing.T) { expectErr: false, expectCalls: []servertesting.CalledDetail{ { - Name: "kill", - Argument: &execution.KillRequest{ContainerID: testID, Signal: uint32(unix.SIGKILL)}, + Name: "kill", + Argument: &execution.KillRequest{ + ContainerID: testID, + Signal: uint32(unix.SIGKILL), + PidOrAll: &execution.KillRequest_All{All: true}, + }, }, { Name: "delete",