From a1ef699aebbe7ebb4da2f90a42e0f612eec08384 Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Tue, 11 Aug 2015 10:18:38 -0700 Subject: [PATCH] client: return context.DeadlineExceeded instead of ClusterError This is done to match user expectation to see context.DeadlineExceeded when it reaches deadline. --- client/client.go | 11 +++-------- client/client_test.go | 5 ++--- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/client/client.go b/client/client.go index 278e02c83..d8176cc1d 100644 --- a/client/client.go +++ b/client/client.go @@ -275,14 +275,9 @@ func (c *httpClusterClient) Do(ctx context.Context, act httpAction) (*http.Respo resp, body, err = hc.Do(ctx, action) if err != nil { cerr.Errors = append(cerr.Errors, err) - // mask previous errors with canceled error if the user explicitly canceled the request - if err == context.Canceled { - return nil, nil, context.Canceled - } - - // TODO: deal with deadline error when we improve the deadline handling. - if err == context.DeadlineExceeded { - return nil, nil, cerr + // mask previous errors with context error, which is controlled by user + if err == context.Canceled || err == context.DeadlineExceeded { + return nil, nil, err } continue } diff --git a/client/client_test.go b/client/client_test.go index 25d665929..902e85543 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -459,9 +459,8 @@ func TestHTTPClusterClientDoDeadlineExceedContext(t *testing.T) { select { case err := <-errc: - werr := &ClusterError{Errors: []error{context.DeadlineExceeded}} - if !reflect.DeepEqual(err, werr) { - t.Errorf("err = %+v, want %+v", err, werr) + if err != context.DeadlineExceeded { + t.Errorf("err = %+v, want %+v", err, context.DeadlineExceeded) } case <-time.After(time.Second): t.Fatalf("unexpected timeout when waitting for request to deadline exceed")