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



27
28
29
# File 'lib/langfuse/otel_setup.rb', line 27

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



72
73
74
# File 'lib/langfuse/otel_setup.rb', line 72

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

.initialized?Boolean

Check if Langfuse tracing has been initialized.

Returns:

  • (Boolean)


79
80
81
# File 'lib/langfuse/otel_setup.rb', line 79

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)


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/langfuse/otel_setup.rb', line 33

def setup(config)
  validate_tracing_config!(config)
  return existing_provider_for(config) if initialized?

  candidate_provider = nil
  provider = nil
  created = false
  candidate_provider = build_tracer_provider(config)
  provider, created = publish_provider(candidate_provider, tracing_config_snapshot(config))
  unless created
    candidate_provider.shutdown(timeout: 30)
    return existing_provider_for(config)
  end

  log_initialized(config)
  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



58
59
60
61
62
63
64
65
66
# File 'lib/langfuse/otel_setup.rb', line 58

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