diff --git a/internal/objectstorage/get.go b/internal/objectstorage/get.go deleted file mode 100644 index 9f55cdd2..00000000 --- a/internal/objectstorage/get.go +++ /dev/null @@ -1,8 +0,0 @@ -package objectstorage - -import ( - "context" -) - -func Get(ctx context.Context) { -} diff --git a/internal/server/otel/service.go b/internal/server/otel/service.go deleted file mode 100644 index 0a284787..00000000 --- a/internal/server/otel/service.go +++ /dev/null @@ -1,37 +0,0 @@ -package otel - -import ( - "context" - "log/slog" - "queryorchestration/internal/serviceconfig/observability" - - "go.opentelemetry.io/otel" - "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" - sdktrace "go.opentelemetry.io/otel/sdk/trace" -) - -func New(ctx context.Context, cfg observability.ConfigProvider) func() error { - if !cfg.IsOtelEnabled() { - slog.Warn("OpenTelemetry is disabled. Set ENABLE_OTEL to true to enable.") - return func() error { return nil } - } - - exporter, err := otlptracegrpc.New(ctx) - if err != nil { - return func() error { return nil } - } - - tp := sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exporter), - ) - - otel.SetTracerProvider(tp) - - return func() error { - err := tp.Shutdown(ctx) - if err != nil { - return err - } - return nil - } -} diff --git a/internal/server/otel/service_test.go b/internal/server/otel/service_test.go deleted file mode 100644 index aa904512..00000000 --- a/internal/server/otel/service_test.go +++ /dev/null @@ -1,27 +0,0 @@ -package otel_test - -import ( - "context" - "fmt" - "queryorchestration/internal/server/otel" - "queryorchestration/internal/serviceconfig/observability" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestNew(t *testing.T) { - ctx := context.Background() - - cfg := &observability.ObsConfig{ - EnableOtel: true, - } - clean := otel.New(ctx, cfg) - assert.NotNil(t, clean) - defer func() { - if err := clean(); err != nil { - // Log cleanup error but don't panic since we're shutting down - fmt.Printf("Error during clean: %v", err) - } - }() -} diff --git a/internal/server/server.go b/internal/server/server.go index 8a35b12d..b4a37878 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -3,7 +3,6 @@ package server import ( "context" "queryorchestration/internal/database/migrations" - "queryorchestration/internal/server/otel" "queryorchestration/internal/serviceconfig" "github.com/go-playground/validator/v10" @@ -30,7 +29,7 @@ func (c *BaseConfig) GetValidator() *validator.Validate { } func New(ctx context.Context, cfg Config) (func() error, error) { - closeTracer := otel.New(ctx, cfg) + closeTracer := cfg.SetOtel(ctx) err := migrations.Run(ctx, cfg) if err != nil { diff --git a/internal/serviceconfig/observability/config.go b/internal/serviceconfig/observability/config.go index 30940d36..17446a25 100644 --- a/internal/serviceconfig/observability/config.go +++ b/internal/serviceconfig/observability/config.go @@ -1,7 +1,17 @@ package observability +import ( + "context" + "log/slog" + + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" + sdktrace "go.opentelemetry.io/otel/sdk/trace" +) + type ConfigProvider interface { IsOtelEnabled() bool + SetOtel(context.Context) func() error } type ObsConfig struct { @@ -11,3 +21,29 @@ type ObsConfig struct { func (o *ObsConfig) IsOtelEnabled() bool { return o.EnableOtel } + +func (o *ObsConfig) SetOtel(ctx context.Context) func() error { + if !o.EnableOtel { + slog.Warn("OpenTelemetry is disabled. Set ENABLE_OTEL to true to enable.") + return func() error { return nil } + } + + exporter, err := otlptracegrpc.New(ctx) + if err != nil { + return func() error { return nil } + } + + tp := sdktrace.NewTracerProvider( + sdktrace.WithBatcher(exporter), + ) + + otel.SetTracerProvider(tp) + + return func() error { + err := tp.Shutdown(ctx) + if err != nil { + return err + } + return nil + } +} diff --git a/internal/serviceconfig/observability/config_test.go b/internal/serviceconfig/observability/config_test.go index a732ff2d..9e64b63d 100644 --- a/internal/serviceconfig/observability/config_test.go +++ b/internal/serviceconfig/observability/config_test.go @@ -1,6 +1,8 @@ package observability_test import ( + "context" + "fmt" "queryorchestration/internal/serviceconfig/observability" "testing" @@ -13,3 +15,19 @@ func TestIsOtelEnabled(t *testing.T) { c.EnableOtel = true assert.True(t, c.IsOtelEnabled()) } + +func TestSetOtel(t *testing.T) { + ctx := context.Background() + + cfg := &observability.ObsConfig{ + EnableOtel: true, + } + clean := cfg.SetOtel(ctx) + assert.NotNil(t, clean) + defer func() { + if err := clean(); err != nil { + // Log cleanup error but don't panic since we're shutting down + fmt.Printf("Error during clean: %v", err) + } + }() +}