mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-09 20:07:49 +00:00
Merge pull request #1166 from cmaf/fix-ctx-port
shimv2: handle ctx passed by containerd
This commit is contained in:
commit
f7383ef835
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user