From a78e91849a2aa8793d4e18755578ebf4c4a929b2 Mon Sep 17 00:00:00 2001 From: Pavel Kositsyn Date: Mon, 9 Nov 2020 16:33:02 +0300 Subject: [PATCH] fasten convert traceID/spanID Signed-off-by: Pavel Kositsyn --- .../esmodeltranslator/modeltranslator.go | 24 +++++++++---------- .../esmodeltranslator/modeltranslator_test.go | 6 +++++ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator.go b/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator.go index 9c99b7137ea..315a944a9c7 100644 --- a/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator.go +++ b/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator.go @@ -15,6 +15,7 @@ package esmodeltranslator import ( + "encoding/hex" "errors" "fmt" "strconv" @@ -222,26 +223,23 @@ func references(links pdata.SpanLinkSlice, parentSpanID pdata.SpanID, traceID db } func convertSpanID(spanID pdata.SpanID) (dbmodel.SpanID, error) { - spanIDInt := tracetranslator.BytesToUInt64SpanID(spanID.Bytes()) - if spanIDInt == 0 { + if !spanID.IsValid() { return "", errZeroSpanID } - return dbmodel.SpanID(fmt.Sprintf("%016x", spanIDInt)), nil + src := spanID.Bytes() + dst := make([]byte, hex.EncodedLen(len(src))) + hex.Encode(dst, src[:]) + return dbmodel.SpanID(dst), nil } func convertTraceID(traceID pdata.TraceID) (dbmodel.TraceID, error) { - high, low := tracetranslator.BytesToUInt64TraceID(traceID.Bytes()) - if low == 0 && high == 0 { + if !traceID.IsValid() { return "", errZeroTraceID } - return dbmodel.TraceID(traceIDToString(high, low)), nil -} - -func traceIDToString(high, low uint64) string { - if high == 0 { - return fmt.Sprintf("%016x", low) - } - return fmt.Sprintf("%016x%016x", high, low) + src := traceID.Bytes() + dst := make([]byte, hex.EncodedLen(len(src))) + hex.Encode(dst, src[:]) + return dbmodel.TraceID(dst), nil } func (c *Translator) process(resource pdata.Resource) *dbmodel.Process { diff --git a/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator_test.go b/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator_test.go index d173d787dd6..4150439e548 100644 --- a/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator_test.go +++ b/cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator_test.go @@ -173,6 +173,12 @@ func TestConvertSpan(t *testing.T) { }, spansData[0]) } +func BenchmarkConvertSpanID(b *testing.B) { + for i := 0; i < b.N; i++ { + _, _ = convertSpanID(spanID) + } +} + func TestSpanEmptyRef(t *testing.T) { traces := traces("myservice") span := addSpan(traces, "root", traceID, spanID)