Merge pull request #29 from containerd/ctxdone
Add client side context.Done support
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
language: go
|
language: go
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- 1.9.x
|
- "1.10.x"
|
||||||
|
|
||||||
script: go test -race -v ./...
|
script: go test -race -v ./...
|
||||||
|
|||||||
@@ -110,12 +110,16 @@ func (c *Client) dispatch(ctx context.Context, req *Request, resp *Response) err
|
|||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
case c.calls <- call:
|
case c.calls <- call:
|
||||||
case <-c.done:
|
case <-c.done:
|
||||||
return c.err
|
return c.err
|
||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
case err := <-errs:
|
case err := <-errs:
|
||||||
return filterCloseErr(err)
|
return filterCloseErr(err)
|
||||||
case <-c.done:
|
case <-c.done:
|
||||||
|
|||||||
@@ -127,13 +127,13 @@ func (s *Server) Serve(ctx context.Context, l net.Listener) error {
|
|||||||
|
|
||||||
func (s *Server) Shutdown(ctx context.Context) error {
|
func (s *Server) Shutdown(ctx context.Context) error {
|
||||||
s.mu.Lock()
|
s.mu.Lock()
|
||||||
lnerr := s.closeListeners()
|
|
||||||
select {
|
select {
|
||||||
case <-s.done:
|
case <-s.done:
|
||||||
default:
|
default:
|
||||||
// protected by mutex
|
// protected by mutex
|
||||||
close(s.done)
|
close(s.done)
|
||||||
}
|
}
|
||||||
|
lnerr := s.closeListeners()
|
||||||
s.mu.Unlock()
|
s.mu.Unlock()
|
||||||
|
|
||||||
ticker := time.NewTicker(200 * time.Millisecond)
|
ticker := time.NewTicker(200 * time.Millisecond)
|
||||||
|
|||||||
Reference in New Issue
Block a user