From f39907aa5d3d1b4ffb2dc0bb08954da1dea6f0b8 Mon Sep 17 00:00:00 2001 From: Lantao Liu Date: Tue, 15 Jan 2019 04:55:38 -0800 Subject: Port containerd fix https://github.com/containerd/containerd/pull/2877. (#12) Adds a timeout and cancel to shim fifo open Signed-off-by: Lantao Liu --- pkg/proc/exec.go | 6 ++++++ pkg/proc/init.go | 13 ++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'pkg') diff --git a/pkg/proc/exec.go b/pkg/proc/exec.go index f52e1afdd..9b729e917 100644 --- a/pkg/proc/exec.go +++ b/pkg/proc/exec.go @@ -191,6 +191,12 @@ func (e *execProcess) start(ctx context.Context) (err error) { e.stdin = sc } var copyWaitGroup sync.WaitGroup + ctx, cancel := context.WithTimeout(ctx, 30*time.Second) + defer func() { + if err != nil { + cancel() + } + }() if socket != nil { console, err := socket.ReceiveMaster() if err != nil { diff --git a/pkg/proc/init.go b/pkg/proc/init.go index 8ed48b60b..a4bb1f20c 100644 --- a/pkg/proc/init.go +++ b/pkg/proc/init.go @@ -106,11 +106,8 @@ func New(id string, runtime *runsc.Runsc, stdio proc.Stdio) *Init { } // Create the process with the provided config -func (p *Init) Create(ctx context.Context, r *CreateConfig) error { - var ( - err error - socket *runc.Socket - ) +func (p *Init) Create(ctx context.Context, r *CreateConfig) (err error) { + var socket *runc.Socket if r.Terminal { if socket, err = runc.NewTempConsoleSocket(); err != nil { return errors.Wrap(err, "failed to create OCI runtime console socket") @@ -149,6 +146,12 @@ func (p *Init) Create(ctx context.Context, r *CreateConfig) error { p.closers = append(p.closers, sc) } var copyWaitGroup sync.WaitGroup + ctx, cancel := context.WithTimeout(ctx, 30*time.Second) + defer func() { + if err != nil { + cancel() + } + }() if socket != nil { console, err := socket.ReceiveMaster() if err != nil { -- cgit v1.2.3