From 85ed03f3305974c00bceeb4737753d5c0735cfc2 Mon Sep 17 00:00:00 2001 From: Pavel Pogodaev Date: Fri, 24 Jan 2025 12:41:07 +0300 Subject: [PATCH] [#51] add address to logs Signed-off-by: Pavel Pogodaev --- pool/object_put_pool_transformer.go | 7 ++++--- pool/pool.go | 2 +- pool/tree/client.go | 10 +++++++--- pool/tree/pool.go | 6 +++--- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/pool/object_put_pool_transformer.go b/pool/object_put_pool_transformer.go index e596aeb..6955919 100644 --- a/pool/object_put_pool_transformer.go +++ b/pool/object_put_pool_transformer.go @@ -2,6 +2,7 @@ package pool import ( "context" + "fmt" sdkClient "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client" apistatus "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client/status" @@ -134,7 +135,7 @@ func (it *internalTarget) putAsStream(ctx context.Context, o *object.Object) err it.res.OID = res.StoredObjectID() it.res.Epoch = res.StoredEpoch() } - return err + return fmt.Errorf("put as stream '%s': %w", it.address, err) } func (it *internalTarget) tryPutSingle(ctx context.Context, o *object.Object) (bool, error) { @@ -151,7 +152,7 @@ func (it *internalTarget) tryPutSingle(ctx context.Context, o *object.Object) (b res, err := it.client.ObjectPutSingle(ctx, cliPrm) if err != nil && status.Code(err) == codes.Unimplemented { - return false, err + return false, fmt.Errorf("address '%s': %w", it.address, err) } if err == nil { @@ -166,5 +167,5 @@ func (it *internalTarget) tryPutSingle(ctx context.Context, o *object.Object) (b } return true, nil } - return true, err + return true, fmt.Errorf("try put single '%s': %w", it.address, err) } diff --git a/pool/pool.go b/pool/pool.go index 2f30ae4..f6588c5 100644 --- a/pool/pool.go +++ b/pool/pool.go @@ -1646,7 +1646,7 @@ func (p *Pool) GetSplitInfo(ctx context.Context, cnrID cid.ID, objID oid.ID, tok case errors.As(err, &errSplit): return errSplit.SplitInfo(), nil case err == nil || errors.As(err, &errECInfo): - return nil, relations.ErrNoSplitInfo + return nil, fmt.Errorf("failed to get raw object header %w", relations.ErrNoSplitInfo) default: return nil, fmt.Errorf("failed to get raw object header: %w", err) } diff --git a/pool/tree/client.go b/pool/tree/client.go index b93b5e6..fb7cdcc 100644 --- a/pool/tree/client.go +++ b/pool/tree/client.go @@ -49,11 +49,11 @@ func (c *treeClient) dial(ctx context.Context) error { var err error c.client, err = c.createClient() if err != nil { - return err + return fmt.Errorf("couldn't dial '%s': %w", c.address, err) } if _, err = rpcapi.Healthcheck(c.client, &tree.HealthcheckRequest{}, rpcclient.WithContext(ctx)); err != nil { - return fmt.Errorf("healthcheck tree service: %w", err) + return fmt.Errorf("healthcheck tree service '%s': %w", c.address, err) } c.healthy = true @@ -127,5 +127,9 @@ func (c *treeClient) close() error { if c.client == nil || c.client.Conn() == nil { return nil } - return c.client.Conn().Close() + err := c.client.Conn().Close() + if err == nil { + return nil + } + return fmt.Errorf("address '%s': %w", c.address, err) } diff --git a/pool/tree/pool.go b/pool/tree/pool.go index f5cee26..dda74c1 100644 --- a/pool/tree/pool.go +++ b/pool/tree/pool.go @@ -295,7 +295,7 @@ func (p *Pool) Dial(ctx context.Context) error { for j, node := range nodes { clients[j] = newTreeClient(node.Address(), p.dialOptions, p.nodeDialTimeout, p.streamTimeout) if err := clients[j].dial(ctx); err != nil { - p.log(zap.WarnLevel, "failed to dial tree client", zap.String("address", node.Address()), zap.Error(err)) + p.log(zap.WarnLevel, "failed to dial tree client", zap.Error(err)) continue } @@ -1095,7 +1095,7 @@ func (p *Pool) getNewTreeClient(ctx context.Context, node netmap.NodeInfo) (*tre newTreeCl := newTreeClient(addr.URIAddr(), p.dialOptions, p.nodeDialTimeout, p.streamTimeout) if err = newTreeCl.dial(ctx); err != nil { - p.log(zap.WarnLevel, "failed to dial tree client", zap.String("address", addr.URIAddr()), zap.Error(err)) + p.log(zap.WarnLevel, "failed to dial tree client", zap.Error(err)) // We have to close connection here after failed `dial()`. // This is NOT necessary in object pool and regular tree pool without netmap support, because: @@ -1103,7 +1103,7 @@ func (p *Pool) getNewTreeClient(ctx context.Context, node netmap.NodeInfo) (*tre // - regular tree pool is going to reuse connection by calling `redialIfNecessary()`. // Tree pool with netmap support does not operate with background goroutine, so we have to close connection immediately. if err = newTreeCl.close(); err != nil { - p.log(zap.WarnLevel, "failed to close recently dialed tree client", zap.String("address", addr.URIAddr()), zap.Error(err)) + p.log(zap.WarnLevel, "failed to close recently dialed tree client", zap.Error(err)) } return false -- 2.45.3