diff options
author | 2024-03-04 05:10:15 -0500 | |
---|---|---|
committer | 2024-03-04 11:10:15 +0100 | |
commit | 66d9297e64fdc9fb4bf4b8df3ea88c1e412aa43c (patch) | |
tree | 0e133415a9d1cddf6b18a5cf958aea4962d0668b /internal/tracing/tracing.go | |
parent | [chore]: Bump golang.org/x/crypto from 0.19.0 to 0.20.0 (#2716) (diff) | |
download | gotosocial-66d9297e64fdc9fb4bf4b8df3ea88c1e412aa43c.tar.xz |
[bugfix/tracing] fix broken tracing due to conflicting schema url (#2712)
The OpenTelemetry SDK is very strict about the schema version when
the `Resource` is initialized.
Specifically, different schema versions _CANNOT_ be mixed, and since
the default SDK resource (which is merged with the user-defined one)
defines a schema URL, the `semconv` imports are really prone to being
out-of-sync.
The best way to avoid this is to merge a _schemaless_ resource. This
is fine...there's plenty of other ways to get `semconv` out of sync,
and the core service attributes (e.g. `service.name`) should not ever
change.
Additionally, any errors here are now propagated so that they'll be
visible instead of silently swallowed.
Diffstat (limited to 'internal/tracing/tracing.go')
-rw-r--r-- | internal/tracing/tracing.go | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/internal/tracing/tracing.go b/internal/tracing/tracing.go index da6fc6580..4f37ccd09 100644 --- a/internal/tracing/tracing.go +++ b/internal/tracing/tracing.go @@ -34,8 +34,8 @@ import ( "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/sdk/resource" "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.20.0" - httpconv "go.opentelemetry.io/otel/semconv/v1.20.0/httpconv" + "go.opentelemetry.io/otel/semconv/v1.20.0/httpconv" + semconv "go.opentelemetry.io/otel/semconv/v1.21.0" oteltrace "go.opentelemetry.io/otel/trace" "github.com/superseriousbusiness/gotosocial/internal/config" @@ -84,13 +84,16 @@ func Initialize() error { default: return fmt.Errorf("invalid tracing transport: %s", config.GetTracingTransport()) } - r, _ := resource.Merge( + r, err := resource.Merge( resource.Default(), - resource.NewWithAttributes( - semconv.SchemaURL, + resource.NewSchemaless( semconv.ServiceName("GoToSocial"), ), ) + if err != nil { + // this can happen if semconv versioning is out-of-sync + return fmt.Errorf("building tracing resource: %w", err) + } tp := trace.NewTracerProvider( tpo, |