[#242] node: Add tracing spans

Add tracing spans for PUT requests.
Add tracing spans for DELETE requests.
Add tracing spans for SELECT requests.

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
Dmitrii Stepanov 2023-04-12 17:01:29 +03:00 committed by fyrchik
parent 200fc8b882
commit d62c6e4ce6
122 changed files with 863 additions and 417 deletions

View file

@ -5,6 +5,7 @@ import (
"fmt"
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object"
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/pkg/tracing"
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc"
rawclient "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/client"
sessionV2 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session"
@ -15,6 +16,8 @@ import (
internalclient "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/internal/client"
putsvc "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/put"
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/object/util"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
)
type streamer struct {
@ -34,6 +37,9 @@ type sizes struct {
}
func (s *streamer) Send(ctx context.Context, req *object.PutRequest) (err error) {
ctx, span := tracing.StartSpanFromContext(ctx, "putv2.streamer.Send")
defer span.End()
switch v := req.GetBody().GetObjectPart().(type) {
case *object.PutObjectPartInit:
var initPrm *putsvc.PutInitPrm
@ -43,7 +49,7 @@ func (s *streamer) Send(ctx context.Context, req *object.PutRequest) (err error)
return err
}
if err = s.stream.Init(initPrm); err != nil {
if err = s.stream.Init(ctx, initPrm); err != nil {
err = fmt.Errorf("(%T) could not init object put stream: %w", s, err)
}
@ -105,6 +111,9 @@ func (s *streamer) Send(ctx context.Context, req *object.PutRequest) (err error)
}
func (s *streamer) CloseAndRecv(ctx context.Context) (*object.PutResponse, error) {
ctx, span := tracing.StartSpanFromContext(ctx, "putv2.streamer.CloseAndRecv")
defer span.End()
if s.saveChunks {
// check payload size correctness
if s.writtenPayload != s.payloadSz {
@ -121,6 +130,9 @@ func (s *streamer) CloseAndRecv(ctx context.Context) (*object.PutResponse, error
}
func (s *streamer) relayRequest(ctx context.Context, info client.NodeInfo, c client.MultiAddressClient) error {
ctx, span := tracing.StartSpanFromContext(ctx, "putv2.streamer.relayRequest")
defer span.End()
// open stream
resp := new(object.PutResponse)
@ -129,6 +141,12 @@ func (s *streamer) relayRequest(ctx context.Context, info client.NodeInfo, c cli
var firstErr error
info.AddressGroup().IterateAddresses(func(addr network.Address) (stop bool) {
ctx, span := tracing.StartSpanFromContext(ctx, "putv2.streamer.iterateAddress",
trace.WithAttributes(
attribute.String("address", addr.String()),
))
defer span.End()
var err error
defer func() {