[#110] tree: Add more logs for switching tree endpoints

Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
This commit is contained in:
Denis Kirillov 2023-05-18 17:51:46 +03:00
parent 1fdbfb0dab
commit 24390fdec8

View file

@ -145,8 +145,11 @@ func (c *ServiceClientGRPC) GetNodes(ctx context.Context, p *tree.GetNodesParams
return nil, err return nil, err
} }
log := c.log.With(zap.String("request_id", api.GetRequestID(ctx)), zap.String("tree", p.TreeID),
zap.String("method", "GetNodeByPath"))
var resp *grpcService.GetNodeByPathResponse var resp *grpcService.GetNodeByPathResponse
if err := c.requestWithRetry(func(client treeClient) (inErr error) { if err := c.requestWithRetry(log, func(client treeClient) (inErr error) {
resp, inErr = client.service.GetNodeByPath(ctx, request) resp, inErr = client.service.GetNodeByPath(ctx, request)
return handleError("failed to get node by path", inErr) return handleError("failed to get node by path", inErr)
}); err != nil { }); err != nil {
@ -181,8 +184,11 @@ func (c *ServiceClientGRPC) GetSubTree(ctx context.Context, bktInfo *data.Bucket
return nil, err return nil, err
} }
log := c.log.With(zap.String("request_id", api.GetRequestID(ctx)), zap.String("tree", treeID),
zap.String("method", "GetSubTree"))
var cli grpcService.TreeService_GetSubTreeClient var cli grpcService.TreeService_GetSubTreeClient
if err := c.requestWithRetry(func(client treeClient) (inErr error) { if err := c.requestWithRetry(log, func(client treeClient) (inErr error) {
cli, inErr = client.service.GetSubTree(ctx, request) cli, inErr = client.service.GetSubTree(ctx, request)
return handleError("failed to get sub tree client", inErr) return handleError("failed to get sub tree client", inErr)
}); err != nil { }); err != nil {
@ -222,8 +228,11 @@ func (c *ServiceClientGRPC) AddNode(ctx context.Context, bktInfo *data.BucketInf
return 0, err return 0, err
} }
log := c.log.With(zap.String("request_id", api.GetRequestID(ctx)), zap.String("tree", treeID),
zap.String("method", "Add"))
var resp *grpcService.AddResponse var resp *grpcService.AddResponse
if err := c.requestWithRetry(func(client treeClient) (inErr error) { if err := c.requestWithRetry(log, func(client treeClient) (inErr error) {
resp, inErr = client.service.Add(ctx, request) resp, inErr = client.service.Add(ctx, request)
return handleError("failed to add node", inErr) return handleError("failed to add node", inErr)
}); err != nil { }); err != nil {
@ -254,8 +263,11 @@ func (c *ServiceClientGRPC) AddNodeByPath(ctx context.Context, bktInfo *data.Buc
return 0, err return 0, err
} }
log := c.log.With(zap.String("request_id", api.GetRequestID(ctx)), zap.String("tree", treeID),
zap.String("method", "AddByPath"))
var resp *grpcService.AddByPathResponse var resp *grpcService.AddByPathResponse
if err := c.requestWithRetry(func(client treeClient) (inErr error) { if err := c.requestWithRetry(log, func(client treeClient) (inErr error) {
resp, inErr = client.service.AddByPath(ctx, request) resp, inErr = client.service.AddByPath(ctx, request)
return handleError("failed to add node by path", inErr) return handleError("failed to add node by path", inErr)
}); err != nil { }); err != nil {
@ -294,7 +306,10 @@ func (c *ServiceClientGRPC) MoveNode(ctx context.Context, bktInfo *data.BucketIn
return err return err
} }
return c.requestWithRetry(func(client treeClient) error { log := c.log.With(zap.String("request_id", api.GetRequestID(ctx)), zap.String("tree", treeID),
zap.String("method", "Move"))
return c.requestWithRetry(log, func(client treeClient) error {
if _, err := client.service.Move(ctx, request); err != nil { if _, err := client.service.Move(ctx, request); err != nil {
return handleError("failed to move node", err) return handleError("failed to move node", err)
} }
@ -320,7 +335,10 @@ func (c *ServiceClientGRPC) RemoveNode(ctx context.Context, bktInfo *data.Bucket
return err return err
} }
return c.requestWithRetry(func(client treeClient) error { log := c.log.With(zap.String("request_id", api.GetRequestID(ctx)), zap.String("tree", treeID),
zap.String("method", "Remove"))
return c.requestWithRetry(log, func(client treeClient) error {
if _, err := client.service.Remove(ctx, request); err != nil { if _, err := client.service.Remove(ctx, request); err != nil {
return handleError("failed to remove node", err) return handleError("failed to remove node", err)
} }
@ -328,7 +346,7 @@ func (c *ServiceClientGRPC) RemoveNode(ctx context.Context, bktInfo *data.Bucket
}) })
} }
func (c *ServiceClientGRPC) requestWithRetry(fn func(client treeClient) error) (err error) { func (c *ServiceClientGRPC) requestWithRetry(log *zap.Logger, fn func(client treeClient) error) (err error) {
start := int(atomic.LoadInt32(&c.startIndex)) start := int(atomic.LoadInt32(&c.startIndex))
for i := start; i < start+len(c.clients); i++ { for i := start; i < start+len(c.clients); i++ {
index := i % len(c.clients) index := i % len(c.clients)
@ -337,7 +355,7 @@ func (c *ServiceClientGRPC) requestWithRetry(fn func(client treeClient) error) (
atomic.StoreInt32(&c.startIndex, int32(index)) atomic.StoreInt32(&c.startIndex, int32(index))
return err return err
} }
c.log.Debug("tree request error", zap.String("address", c.clients[index].address), zap.Error(err)) log.Debug("tree request error", zap.String("address", c.clients[index].address), zap.Error(err))
} }
return err return err