From 985bcee116ecdb55d1987ba7b5a5d0d237a8f812 Mon Sep 17 00:00:00 2001 From: Ibraheem Aboulnaga Date: Wed, 6 Nov 2024 13:49:20 -0500 Subject: [PATCH] edit control flow --- pkg/trace/traceutil/otel_util.go | 69 ++++++++++++++++---------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/pkg/trace/traceutil/otel_util.go b/pkg/trace/traceutil/otel_util.go index dc4bfbc1f6316..5f7fa7acfafa1 100644 --- a/pkg/trace/traceutil/otel_util.go +++ b/pkg/trace/traceutil/otel_util.go @@ -206,51 +206,52 @@ func GetOTelResourceV1(span ptrace.Span, res pcommon.Resource) (resName string) } // GetOTelResourceV2 returns the DD resource name based on OTel span and resource attributes. -func GetOTelResourceV2(span ptrace.Span, res pcommon.Resource) string { - resName := GetOTelAttrValInResAndSpanAttrs(span, res, false, "resource.name") - if resName == "" { - if m := GetOTelAttrValInResAndSpanAttrs(span, res, false, "http.request.method", semconv.AttributeHTTPMethod); m != "" { - if m == "_OTHER" { - m = "HTTP" - } - // use the HTTP method + route (if available) - resName = m - if span.Kind() == ptrace.SpanKindServer { - if route := GetOTelAttrValInResAndSpanAttrs(span, res, false, semconv.AttributeHTTPRoute); route != "" { - resName = resName + " " + route - } - } +func GetOTelResourceV2(span ptrace.Span, res pcommon.Resource) (resName string) { + defer func() { + if len(resName) > MaxResourceLen { + resName = resName[:MaxResourceLen] } + }() + if m := GetOTelAttrValInResAndSpanAttrs(span, res, false, "resource.name"); m != "" { + resName = m + return } - if resName == "" { - if m := GetOTelAttrValInResAndSpanAttrs(span, res, false, semconv.AttributeMessagingOperation); m != "" { - resName = m - // use the messaging operation - if dest := GetOTelAttrValInResAndSpanAttrs(span, res, false, semconv.AttributeMessagingDestination, semconv117.AttributeMessagingDestinationName); dest != "" { - resName = resName + " " + dest + if m := GetOTelAttrValInResAndSpanAttrs(span, res, false, "http.request.method", semconv.AttributeHTTPMethod); m != "" { + if m == "_OTHER" { + m = "HTTP" + } + // use the HTTP method + route (if available) + resName = m + if span.Kind() == ptrace.SpanKindServer { + if route := GetOTelAttrValInResAndSpanAttrs(span, res, false, semconv.AttributeHTTPRoute); route != "" { + resName = resName + " " + route } } + return } - if resName == "" { - if m := GetOTelAttrValInResAndSpanAttrs(span, res, false, semconv.AttributeRPCMethod); m != "" { - resName = m - // use the RPC method - if svc := GetOTelAttrValInResAndSpanAttrs(span, res, false, semconv.AttributeRPCService); m != "" { - // ...and service if available - resName = resName + " " + svc - } + if m := GetOTelAttrValInResAndSpanAttrs(span, res, false, semconv.AttributeMessagingOperation); m != "" { + resName = m + // use the messaging operation + if dest := GetOTelAttrValInResAndSpanAttrs(span, res, false, semconv.AttributeMessagingDestination, semconv117.AttributeMessagingDestinationName); dest != "" { + resName = resName + " " + dest } + return } - if resName == "" { - resName = span.Name() - } - if len(resName) > MaxResourceLen { - resName = resName[:MaxResourceLen] + if m := GetOTelAttrValInResAndSpanAttrs(span, res, false, semconv.AttributeRPCMethod); m != "" { + resName = m + // use the RPC method + if svc := GetOTelAttrValInResAndSpanAttrs(span, res, false, semconv.AttributeRPCService); m != "" { + // ...and service if available + resName = resName + " " + svc + } + return } - return resName + resName = span.Name() + + return } // GetOTelOperationNameV2 returns the DD operation name based on OTel span and resource attributes and given configs.