diff --git a/ldap/pool.go b/ldap/pool.go
index 12a6588d4ce9836101ce90377be0abaaf3e204bb..f6831fe0c2808fabcf24e98cca568fc865f559cf 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 d4185014b2b58f9308d72e56a247779f1c975641..835769078291d711b1f63550ee3f34b7264f3d82 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)