diff --git a/fiber_middleware.go b/fiber_middleware.go index 4a4ada2..2725044 100644 --- a/fiber_middleware.go +++ b/fiber_middleware.go @@ -105,6 +105,10 @@ func (t *Telemetry) FiberMiddleware(config ...FiberMiddlewareConfig) fiber.Handl } return func(c *fiber.Ctx) error { + ctx := c.UserContext() + ctx = SetOnContext(t, ctx) + c.SetUserContext(ctx) + // Skip ignored routes (/ping for example) if slices.Contains(cfg.IgnoredRoutes, c.Path()) { return c.Next() @@ -113,7 +117,7 @@ func (t *Telemetry) FiberMiddleware(config ...FiberMiddlewareConfig) fiber.Handl start := time.Now() requestMetricsAttrs := httpServerTraceAttributesFromRequest(c) - mActiveRequests.Add(c.Context(), 1, metric.WithAttributes(requestMetricsAttrs...)) + mActiveRequests.Add(ctx, 1, metric.WithAttributes(requestMetricsAttrs...)) responseMetricAttrs := make([]attribute.KeyValue, len(requestMetricsAttrs)) copy(responseMetricAttrs, requestMetricsAttrs) @@ -123,7 +127,7 @@ func (t *Telemetry) FiberMiddleware(config ...FiberMiddlewareConfig) fiber.Handl return err } - ctx := t.propagator.Extract(c.UserContext(), propagation.HeaderCarrier(stdRequest.Header)) + ctx = t.propagator.Extract(ctx, propagation.HeaderCarrier(stdRequest.Header)) hub := sentry.CurrentHub().Clone() if client := hub.Client(); client != nil { diff --git a/telemetry.go b/telemetry.go index 6d69d30..0ba45d9 100644 --- a/telemetry.go +++ b/telemetry.go @@ -22,7 +22,7 @@ import ( "go.opentelemetry.io/otel/trace/noop" ) -type otlpContextKey struct{} +type telemetryContextKey struct{} type Opts struct { Environment string @@ -70,10 +70,10 @@ func (o *Telemetry) Shutdown(ctx context.Context) { } func SetOnContext(o *Telemetry, ctx context.Context) context.Context { - return context.WithValue(ctx, otlpContextKey{}, o) + return context.WithValue(ctx, telemetryContextKey{}, o) } func FromContext(ctx context.Context) *Telemetry { - return ctx.Value(otlpContextKey{}).(*Telemetry) + return ctx.Value(telemetryContextKey{}).(*Telemetry) } func newSpanExporter(ctx context.Context, opts Opts) (sdktrace.SpanExporter, error) {