From 310a960112f4946950924b0db6ce0c001508094e Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Tue, 16 Aug 2022 10:07:06 +0100 Subject: [PATCH] Small refactor of span status handling in LDAP client --- ldap/pool.go | 22 ++++++++++++++-------- tracing/tracing.go | 6 +++--- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/ldap/pool.go b/ldap/pool.go index 12a6588..f6831fe 100644 --- a/ldap/pool.go +++ b/ldap/pool.go @@ -191,9 +191,8 @@ func (p *ConnectionPool) doRequest(ctx context.Context, name string, attrs []att }, backoff.WithContext(newExponentialBackOff(), ctx)) // Tracing: set the final status. - if span != nil { - span.SetStatus(errorToTraceStatus(rerr)) - } + setSpanStatus(span, rerr) + requestsCounter.WithLabelValues(name).Inc() if rerr != nil { requestErrors.WithLabelValues(name).Inc() @@ -269,17 +268,24 @@ func isProtocolError(err error) bool { return false } -func errorToTraceStatus(err error) (codes.Code, string) { +func setSpanStatus(span trace.Span, err error) { + if span == nil { + return + } + switch err { case nil: - return codes.Ok, "OK" + span.SetStatus(codes.Ok, "OK") + return case context.Canceled: - return codes.Error, "CANCELED" + span.SetStatus(codes.Error, "CANCELED") case context.DeadlineExceeded: - return codes.Error, "DEADLINE_EXCEEDED" + span.SetStatus(codes.Error, "DEADLINE_EXCEEDED") default: - return codes.Error, err.Error() + span.SetStatus(codes.Error, err.Error()) } + + span.RecordError(err) } var ( diff --git a/tracing/tracing.go b/tracing/tracing.go index d418501..8357690 100644 --- a/tracing/tracing.go +++ b/tracing/tracing.go @@ -75,12 +75,12 @@ func getServiceName() string { return filepath.Base(os.Args[0]) } -func defaultResource() *resource.Resource { +func defaultResource(serviceName string) *resource.Resource { r, _ := resource.Merge( resource.Default(), resource.NewWithAttributes( semconv.SchemaURL, - semconv.ServiceNameKey.String(getServiceName()), + semconv.ServiceNameKey.String(serviceName), ), ) return r @@ -128,8 +128,8 @@ func initTracing(serviceName string) { tp := trace.NewTracerProvider( trace.WithSampler(sampler), - trace.WithResource(defaultResource()), trace.WithBatcher(ze), + trace.WithResource(defaultResource(serviceName)), ) otel.SetTracerProvider(tp) -- GitLab