Skip to content

Commit c3532a3

Browse files
Merge pull request #3739 from estesp/cp-1.2-3736
[release/1.2] backport: Fix delete error code on the containerd daemon side.
2 parents 4456381 + 847f74c commit c3532a3

3 files changed

Lines changed: 22 additions & 8 deletions

File tree

runtime/v1/linux/task.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,12 @@ func (t *Task) Namespace() string {
8686

8787
// Delete the task and return the exit status
8888
func (t *Task) Delete(ctx context.Context) (*runtime.Exit, error) {
89-
rsp, err := t.shim.Delete(ctx, empty)
90-
if err != nil && !errdefs.IsNotFound(err) {
91-
return nil, errdefs.FromGRPC(err)
89+
rsp, shimErr := t.shim.Delete(ctx, empty)
90+
if shimErr != nil {
91+
shimErr = errdefs.FromGRPC(shimErr)
92+
if !errdefs.IsNotFound(shimErr) {
93+
return nil, shimErr
94+
}
9295
}
9396
t.tasks.Delete(ctx, t.id)
9497
if err := t.shim.KillShim(ctx); err != nil {
@@ -97,6 +100,9 @@ func (t *Task) Delete(ctx context.Context) (*runtime.Exit, error) {
97100
if err := t.bundle.Delete(); err != nil {
98101
log.G(ctx).WithError(err).Error("failed to delete bundle")
99102
}
103+
if shimErr != nil {
104+
return nil, shimErr
105+
}
100106
t.events.Publish(ctx, runtime.TaskDeleteEventTopic, &eventstypes.TaskDelete{
101107
ContainerID: t.id,
102108
ExitStatus: rsp.ExitStatus,

runtime/v2/shim.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,14 @@ func (s *shim) Close() error {
147147
}
148148

149149
func (s *shim) Delete(ctx context.Context) (*runtime.Exit, error) {
150-
response, err := s.task.Delete(ctx, &task.DeleteRequest{
150+
response, shimErr := s.task.Delete(ctx, &task.DeleteRequest{
151151
ID: s.ID(),
152152
})
153-
if err != nil && !errdefs.IsNotFound(err) {
154-
return nil, errdefs.FromGRPC(err)
153+
if shimErr != nil {
154+
shimErr = errdefs.FromGRPC(shimErr)
155+
if !errdefs.IsNotFound(shimErr) {
156+
return nil, shimErr
157+
}
155158
}
156159
if err := s.waitShutdown(ctx); err != nil {
157160
return nil, err
@@ -162,6 +165,11 @@ func (s *shim) Delete(ctx context.Context) (*runtime.Exit, error) {
162165
// remove self from the runtime task list
163166
// this seems dirty but it cleans up the API across runtimes, tasks, and the service
164167
s.rtTasks.Delete(ctx, s.ID())
168+
169+
if shimErr != nil {
170+
return nil, shimErr
171+
}
172+
165173
s.events.Publish(ctx, runtime.TaskDeleteEventTopic, &eventstypes.TaskDelete{
166174
ContainerID: s.ID(),
167175
ExitStatus: response.ExitStatus,

services/tasks/local.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ func (l *local) Delete(ctx context.Context, r *api.DeleteTaskRequest, _ ...grpc.
229229
}
230230
exit, err := t.Delete(ctx)
231231
if err != nil {
232-
return nil, err
232+
return nil, errdefs.ToGRPC(err)
233233
}
234234
return &api.DeleteResponse{
235235
ExitStatus: exit.Status,
@@ -245,7 +245,7 @@ func (l *local) DeleteProcess(ctx context.Context, r *api.DeleteProcessRequest,
245245
}
246246
process, err := t.Process(ctx, r.ExecID)
247247
if err != nil {
248-
return nil, err
248+
return nil, errdefs.ToGRPC(err)
249249
}
250250
exit, err := process.Delete(ctx)
251251
if err != nil {

0 commit comments

Comments
 (0)