From 7f31621106592696d007144ebca9f0748d9b0d05 Mon Sep 17 00:00:00 2001 From: Pavel Karpy Date: Tue, 11 Jan 2022 20:17:31 +0300 Subject: [PATCH] [#114] pool: Use "simple" error handling in pool Signed-off-by: Pavel Karpy --- pool/pool.go | 91 +++++++++++----------------------------------------- 1 file changed, 19 insertions(+), 72 deletions(-) diff --git a/pool/pool.go b/pool/pool.go index bb378169..e7004bdf 100644 --- a/pool/pool.go +++ b/pool/pool.go @@ -18,7 +18,6 @@ import ( apiclient "github.com/nspcc-dev/neofs-api-go/v2/rpc/client" "github.com/nspcc-dev/neofs-sdk-go/accounting" "github.com/nspcc-dev/neofs-sdk-go/client" - apistatus "github.com/nspcc-dev/neofs-sdk-go/client/status" "github.com/nspcc-dev/neofs-sdk-go/container" cid "github.com/nspcc-dev/neofs-sdk-go/container/id" "github.com/nspcc-dev/neofs-sdk-go/eacl" @@ -274,7 +273,8 @@ func newPool(ctx context.Context, options *BuilderOptions) (Pool, error) { for j, address := range params.addresses { c, err := options.clientBuilder(client.WithDefaultPrivateKey(options.Key), client.WithURIAddress(address, nil), - client.WithDialTimeout(options.NodeConnectionTimeout)) + client.WithDialTimeout(options.NodeConnectionTimeout), + client.WithNeoFSErrorParsing()) if err != nil { return nil, err } @@ -531,11 +531,8 @@ func (p *pool) PutObject(ctx context.Context, params *client.PutObjectParams, op if err != nil { return nil, err } + res, err := cp.client.PutObject(ctx, params, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -556,11 +553,7 @@ func (p *pool) DeleteObject(ctx context.Context, params *client.DeleteObjectPara return err } - res, err := cp.client.DeleteObject(ctx, params, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } + _, err = cp.client.DeleteObject(ctx, params, options...) if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -578,11 +571,8 @@ func (p *pool) GetObject(ctx context.Context, params *client.GetObjectParams, op if err != nil { return nil, err } + res, err := cp.client.GetObject(ctx, params, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -602,11 +592,8 @@ func (p *pool) GetObjectHeader(ctx context.Context, params *client.ObjectHeaderP if err != nil { return nil, err } + res, err := cp.client.HeadObject(ctx, params, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -626,11 +613,8 @@ func (p *pool) ObjectPayloadRangeData(ctx context.Context, params *client.RangeD if err != nil { return nil, err } + res, err := cp.client.ObjectPayloadRangeData(ctx, params, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -667,10 +651,6 @@ func (p *pool) ObjectPayloadRangeSHA256(ctx context.Context, params *client.Rang // SHA256 by default, no need to do smth res, err := cp.client.HashObjectPayloadRanges(ctx, params, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -709,10 +689,6 @@ func (p *pool) ObjectPayloadRangeTZ(ctx context.Context, params *client.RangeChe params.TZ() res, err := cp.client.HashObjectPayloadRanges(ctx, params, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -744,11 +720,8 @@ func (p *pool) SearchObject(ctx context.Context, params *client.SearchObjectPara if err != nil { return nil, err } + res, err := cp.client.SearchObjects(ctx, params, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -768,11 +741,8 @@ func (p *pool) PutContainer(ctx context.Context, cnr *container.Container, opts if err != nil { return nil, err } + res, err := cp.client.PutContainer(ctx, cnr, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -792,11 +762,8 @@ func (p *pool) GetContainer(ctx context.Context, cid *cid.ID, opts ...CallOption if err != nil { return nil, err } + res, err := cp.client.GetContainer(ctx, cid, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -816,11 +783,8 @@ func (p *pool) ListContainers(ctx context.Context, ownerID *owner.ID, opts ...Ca if err != nil { return nil, err } + res, err := cp.client.ListContainers(ctx, ownerID, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -840,11 +804,8 @@ func (p *pool) DeleteContainer(ctx context.Context, cid *cid.ID, opts ...CallOpt if err != nil { return err } - res, err := cp.client.DeleteContainer(ctx, cid, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } + + _, err = cp.client.DeleteContainer(ctx, cid, options...) if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -862,11 +823,8 @@ func (p *pool) GetEACL(ctx context.Context, cid *cid.ID, opts ...CallOption) (*e if err != nil { return nil, err } + res, err := cp.client.EACL(ctx, cid, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -886,11 +844,8 @@ func (p *pool) SetEACL(ctx context.Context, table *eacl.Table, opts ...CallOptio if err != nil { return err } - res, err := cp.client.SetEACL(ctx, table, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } + + _, err = cp.client.SetEACL(ctx, table, options...) if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -908,11 +863,8 @@ func (p *pool) AnnounceContainerUsedSpace(ctx context.Context, announce []contai if err != nil { return err } - res, err := cp.client.AnnounceContainerUsedSpace(ctx, announce, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } + + _, err = cp.client.AnnounceContainerUsedSpace(ctx, announce, options...) if p.checkSessionTokenErr(err, cp.address) && !cfg.isRetry { opts = append(opts, retry()) @@ -932,12 +884,7 @@ func (p *pool) Balance(ctx context.Context, o *owner.ID, opts ...CallOption) (*a } res, err := cp.client.GetBalance(ctx, o, options...) - if err == nil { - // reflect status failures in err - err = apistatus.ErrFromStatus(res.Status()) - } - - if err != nil { + if err != nil { // here err already carries both status and client errors return nil, err }