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