From b05c9fdf1ba34be6be287d8ae1ddb289db15c824 Mon Sep 17 00:00:00 2001 From: Yash Sharma Date: Thu, 11 Mar 2021 13:52:27 +0530 Subject: [PATCH] use the main branch's implementation of MultiError Signed-off-by: Yash Sharma --- pkg/errutil/multierror.go | 5 ----- pkg/route/error.go | 2 +- pkg/route/handler.go | 2 +- pkg/route/handler_test.go | 26 +++++++++++++------------- 4 files changed, 15 insertions(+), 20 deletions(-) diff --git a/pkg/errutil/multierror.go b/pkg/errutil/multierror.go index 23c0cafad7f..aa53706dde6 100644 --- a/pkg/errutil/multierror.go +++ b/pkg/errutil/multierror.go @@ -32,11 +32,6 @@ func (es MultiError) Err() error { return NonNilMultiError(es) } -// Error implements the error interface. -func (es MultiError) Error() string { - return es.Err().Error() -} - type NonNilMultiError MultiError // Returns a concatenated string of the contained errors. diff --git a/pkg/route/error.go b/pkg/route/error.go index 3fca4d17c58..a17aacd301f 100644 --- a/pkg/route/error.go +++ b/pkg/route/error.go @@ -38,7 +38,7 @@ func determineWriteErrorCause(err error, threshold int) error { } unwrappedErr := errors.Cause(err) - errs, ok := unwrappedErr.(errutil.MultiError) + errs, ok := unwrappedErr.(errutil.NonNilMultiError) if !ok { errs = []error{unwrappedErr} } diff --git a/pkg/route/handler.go b/pkg/route/handler.go index 8eda6258540..79e06c548e6 100644 --- a/pkg/route/handler.go +++ b/pkg/route/handler.go @@ -486,7 +486,7 @@ func (h *Handler) fanoutForward(pctx context.Context, tenant string, replicas ma return fctx.Err() case err, more := <-ec: if !more { - return errs + return errs.Err() } if err == nil { success++ diff --git a/pkg/route/handler_test.go b/pkg/route/handler_test.go index e0220c41cc4..ff73da7261d 100644 --- a/pkg/route/handler_test.go +++ b/pkg/route/handler_test.go @@ -49,7 +49,7 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "nil multierror", - err: errutil.MultiError([]error{}), + err: errutil.NonNilMultiError([]error{}), }, { name: "matching simple", @@ -59,7 +59,7 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "non-matching multierror", - err: errutil.MultiError([]error{ + err: errutil.NonNilMultiError([]error{ errors.New("foo"), errors.New("bar"), }), @@ -67,7 +67,7 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "nested non-matching multierror", - err: errors.Wrap(errutil.MultiError([]error{ + err: errors.Wrap(errutil.NonNilMultiError([]error{ errors.New("foo"), errors.New("bar"), }), "baz"), @@ -76,9 +76,9 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "deep nested non-matching multierror", - err: errors.Wrap(errutil.MultiError([]error{ + err: errors.Wrap(errutil.NonNilMultiError([]error{ errors.New("foo"), - errutil.MultiError([]error{ + errutil.NonNilMultiError([]error{ errors.New("bar"), errors.New("qux"), }), @@ -88,7 +88,7 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "matching multierror", - err: errutil.MultiError([]error{ + err: errutil.NonNilMultiError([]error{ storage.ErrOutOfOrderSample, errors.New("foo"), errors.New("bar"), @@ -98,7 +98,7 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "matching but below threshold multierror", - err: errutil.MultiError([]error{ + err: errutil.NonNilMultiError([]error{ storage.ErrOutOfOrderSample, errors.New("foo"), errors.New("bar"), @@ -108,7 +108,7 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "matching multierror many", - err: errutil.MultiError([]error{ + err: errutil.NonNilMultiError([]error{ storage.ErrOutOfOrderSample, errConflict, status.Error(codes.AlreadyExists, "conflict"), @@ -120,7 +120,7 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "matching multierror many, one above threshold", - err: errutil.MultiError([]error{ + err: errutil.NonNilMultiError([]error{ storage.ErrOutOfOrderSample, errConflict, tsdb.ErrNotReady, @@ -133,7 +133,7 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "matching multierror many, both above threshold, conflict have precedence", - err: errutil.MultiError([]error{ + err: errutil.NonNilMultiError([]error{ storage.ErrOutOfOrderSample, errConflict, tsdb.ErrNotReady, @@ -147,7 +147,7 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "nested matching multierror", - err: errors.Wrap(errors.Wrap(errutil.MultiError([]error{ + err: errors.Wrap(errors.Wrap(errutil.NonNilMultiError([]error{ storage.ErrOutOfOrderSample, errors.New("foo"), errors.New("bar"), @@ -157,8 +157,8 @@ func TestDetermineWriteErrorCause(t *testing.T) { }, { name: "deep nested matching multierror", - err: errors.Wrap(errutil.MultiError([]error{ - errutil.MultiError([]error{ + err: errors.Wrap(errutil.NonNilMultiError([]error{ + errutil.NonNilMultiError([]error{ errors.New("qux"), status.Error(codes.AlreadyExists, "conflict"), status.Error(codes.AlreadyExists, "conflict"),