Merge pull request #1166 from cmaf/fix-ctx-port

shimv2: handle ctx passed by containerd
This commit is contained in:
Fabiano Fidêncio 2020-12-03 19:45:52 +01:00 committed by GitHub
commit f7383ef835
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -343,34 +343,46 @@ func (s *service) Create(ctx context.Context, r *taskAPI.CreateTaskRequest) (_ *
s.mu.Lock() s.mu.Lock()
defer s.mu.Unlock() defer s.mu.Unlock()
var c *container type Result struct {
container *container
c, err = create(ctx, s, r) err error
if err != nil {
return nil, err
} }
ch := make(chan Result, 1)
go func() {
container, err := create(ctx, s, r)
ch <- Result{container, err}
}()
c.status = task.StatusCreated select {
case <-ctx.Done():
return nil, errors.Errorf("create container timeout: %v", r.ID)
case res := <-ch:
if res.err != nil {
return nil, res.err
}
container := res.container
container.status = task.StatusCreated
s.containers[r.ID] = c s.containers[r.ID] = container
s.send(&eventstypes.TaskCreate{ s.send(&eventstypes.TaskCreate{
ContainerID: r.ID, ContainerID: r.ID,
Bundle: r.Bundle, Bundle: r.Bundle,
Rootfs: r.Rootfs, Rootfs: r.Rootfs,
IO: &eventstypes.TaskIO{ IO: &eventstypes.TaskIO{
Stdin: r.Stdin, Stdin: r.Stdin,
Stdout: r.Stdout, Stdout: r.Stdout,
Stderr: r.Stderr, Stderr: r.Stderr,
Terminal: r.Terminal, Terminal: r.Terminal,
}, },
Checkpoint: r.Checkpoint, Checkpoint: r.Checkpoint,
Pid: s.pid, Pid: s.pid,
}) })
return &taskAPI.CreateTaskResponse{ return &taskAPI.CreateTaskResponse{
Pid: s.pid, Pid: s.pid,
}, nil }, nil
}
} }
// Start a process // Start a process