Module: Langfuse::OtelSetup

Defined in:
lib/langfuse/otel_setup.rb

Overview

OpenTelemetry initialization and setup for Langfuse tracing. rubocop:disable Metrics/ModuleLength

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.tracer_providerOpenTelemetry::SDK::Trace::TracerProvider? (readonly)

Returns The configured internal tracer provider.

Returns:

  • (OpenTelemetry::SDK::Trace::TracerProvider, nil)

    The configured internal tracer provider



32
33
34
# File 'lib/langfuse/otel_setup.rb', line 32

def tracer_provider
  @tracer_provider
end

Class Method Details

.force_flush(timeout: 30) ⇒ void

This method returns an undefined value.

Force flush all pending spans on the internal tracer provider.

Parameters:

  • timeout (Integer) (defaults to: 30)

    Timeout in seconds



67
68
69
# File 'lib/langfuse/otel_setup.rb', line 67

def force_flush(timeout: 30)
  @tracer_provider&.force_flush(timeout: timeout)
end

.initialized?Boolean

Check if Langfuse tracing has been initialized.

Returns:

  • (Boolean)


74
75
76
# File 'lib/langfuse/otel_setup.rb', line 74

def initialized?
  !@tracer_provider.nil?
end

.setup(config) ⇒ OpenTelemetry::SDK::Trace::TracerProvider

Initialize Langfuse's internal tracer provider without mutating global OpenTelemetry state.

Parameters:

Returns:

  • (OpenTelemetry::SDK::Trace::TracerProvider)


38
39
40
41
42
43
44
45
46
47
# File 'lib/langfuse/otel_setup.rb', line 38

def setup(config)
  config.validate_tracing!
  provider, created = setup_mutex.synchronize { setup_locked(config) }

  log_initialized(config) if created
  provider
rescue StandardError
  rollback_provider(provider) if created
  raise
end

.shutdown(timeout: 30) ⇒ void

This method returns an undefined value.

Shutdown the internal tracer provider and flush any pending spans.

Parameters:

  • timeout (Integer) (defaults to: 30)

    Timeout in seconds



53
54
55
56
57
58
59
60
61
# File 'lib/langfuse/otel_setup.rb', line 53

def shutdown(timeout: 30)
  provider = nil
  setup_mutex.synchronize do
    provider = @tracer_provider
    @tracer_provider = nil
    @config_snapshot = nil
  end
  provider&.shutdown(timeout: timeout)
end