| 123456789101112131415161718192021 |
- package middleware
- import (
- "net/http"
- "github.com/porter-dev/porter/internal/telemetry"
- "go.opentelemetry.io/otel/trace"
- )
- // HydrateTraces pulls related IDs from requests, and puts them into a span which already exists.
- // If no span already exists, these attibutes will not be populated. This should not be used as a replacement for creating your own spans.
- // This should be added as the last middleware in the chain, so that it can pull IDs from the request context.
- func HydrateTraces(next http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- ctx := r.Context()
- span := trace.SpanFromContext(ctx)
- telemetry.AddKnownContextVariablesToSpan(ctx, span)
- r = r.Clone(ctx)
- next.ServeHTTP(w, r)
- })
- }
|