go.opentelemetry.io/otel/trace broken when scaffolding webhook
Bug Report
What did you do?
I generated a webhook with operator-sdk create webhook --group group --version v1alpha1 --kind Resource --programmatic-validation
What did you expect to see?
I then ran make run and expected the operator to run.
What did you see instead? Under which circumstances?
go fmt ./...
go vet ./...
# go.opentelemetry.io/otel/sdk/trace
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/provider.go:90:30: cannot use &TracerProvider{} (value of type *TracerProvider) as "go.opentelemetry.io/otel/trace".TracerProvider value in variable declaration: *TracerProvider does not implement "go.opentelemetry.io/otel/trace".TracerProvider (missing method tracerProvider)
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/provider.go:170:10: cannot use t (variable of type *tracer) as "go.opentelemetry.io/otel/trace".Tracer value in return statement: *tracer does not implement "go.opentelemetry.io/otel/trace".Tracer (missing method tracer)
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/span.go:161:23: cannot use (*recordingSpan)(nil) (value of type *recordingSpan) as ReadWriteSpan value in variable declaration: *recordingSpan does not implement ReadWriteSpan (missing method span)
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/span.go:692:9: cannot use s.tracer.provider (variable of type *TracerProvider) as "go.opentelemetry.io/otel/trace".TracerProvider value in return statement: *TracerProvider does not implement "go.opentelemetry.io/otel/trace".TracerProvider (missing method tracerProvider)
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/span.go:780:20: cannot use nonRecordingSpan{} (value of type nonRecordingSpan) as "go.opentelemetry.io/otel/trace".Span value in variable declaration: nonRecordingSpan does not implement "go.opentelemetry.io/otel/trace".Span (missing method span)
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/span.go:811:74: cannot use s.tracer.provider (variable of type *TracerProvider) as "go.opentelemetry.io/otel/trace".TracerProvider value in return statement: *TracerProvider does not implement "go.opentelemetry.io/otel/trace".TracerProvider (missing method tracerProvider)
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/tracer.go:30:22: cannot use &tracer{} (value of type *tracer) as "go.opentelemetry.io/otel/trace".Tracer value in variable declaration: *tracer does not implement "go.opentelemetry.io/otel/trace".Tracer (missing method tracer)
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/tracer.go:47:21: impossible type assertion: p.(*recordingSpan)
*recordingSpan does not implement "go.opentelemetry.io/otel/trace".Span (missing method span)
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/tracer.go:117:10: cannot use tr.newNonRecordingSpan(sc) (value of type nonRecordingSpan) as "go.opentelemetry.io/otel/trace".Span value in return statement: nonRecordingSpan does not implement "go.opentelemetry.io/otel/trace".Span (missing method span)
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/tracer.go:119:9: cannot use tr.newRecordingSpan(psc, sc, name, samplingResult, config) (value of type *recordingSpan) as "go.opentelemetry.io/otel/trace".Span value in return statement: *recordingSpan does not implement "go.opentelemetry.io/otel/trace".Span (missing method span)
../../../go/pkg/mod/go.opentelemetry.io/otel/[email protected]/trace/tracer.go:119:9: too many errors
# git.helio.dev/carbon-aware-scheduling/cabws-workload-controller/api/v1alpha1
# [git.helio.dev/carbon-aware-scheduling/cabws-workload-controller/api/v1alpha1]
vet: api/v1alpha1/webhook_suite_test.go:94:3: unknown field Host in struct literal of type manager.Options
make: *** [Makefile:112: vet] Error 1
Environment
Operator type:
/language go
Kubernetes cluster type:
vanilla
$ operator-sdk version
operator-sdk version: "v1.33.0", commit: "542966812906456a8d67cf7284fc6410b104e118", kubernetes version: "1.27.0", go version: "go1.21.5", GOOS: "linux", GOARCH: "amd64"
$ go version (if language is Go)
go1.22.0
$ kubectl version
Client Version: v1.29.1 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 Server Version: v1.29.2
Possible Solution
I tried to update opentelemetry packages in the go.mod:
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
go.opentelemetry.io/otel v1.24.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
Can you try downgrading your Golang version ti 1.21.7? We're currently experiencing versioning issues with go 1.22.
relates #6651
Hi yes sorry forgot to update the issue, downgrading to go 1.21 fixed the issue
Issues go stale after 90d of inactivity.
Mark the issue as fresh by commenting /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
Exclude this issue from closing by commenting /lifecycle frozen.
If this issue is safe to close now please do so with /close.
/lifecycle stale