Class: WideEvent::Configuration
- Inherits:
-
Object
- Object
- WideEvent::Configuration
- Defined in:
- lib/wide_event/configuration.rb
Constant Summary collapse
- DEFAULT_ERROR_HANDLER =
Reports through OTel's error handler when it's loaded; silent otherwise.
lambda do |exception, | if defined?(OpenTelemetry) && OpenTelemetry.respond_to?(:handle_error) OpenTelemetry.handle_error(exception: exception, message: "wide_event #{}") end end
- SOLID_QUEUE_DETECTOR =
Recurring (scheduled) Solid Queue executions have a RecurringExecution row pointing at the underlying job. One indexed query per execution.
lambda do |job| return false unless defined?(SolidQueue::RecurringExecution) job.provider_job_id.present? && SolidQueue::RecurringExecution.exists?(job_id: job.provider_job_id) rescue StandardError false end
- NOOP_STORE_SINK =
A resolved store sink is unusable until its configuration (url/service/environment/ingest token) is valid; falls back to this silent no-op so a misconfigured store never raises into a flush.
Object.new.tap { |sink| sink.define_singleton_method(:flush) { |_attrs| nil } }.freeze
Instance Attribute Summary collapse
-
#enabled ⇒ Object
Returns the value of attribute enabled.
-
#error_handler ⇒ Object
Returns the value of attribute error_handler.
-
#logger ⇒ Object
Returns the value of attribute logger.
-
#max_cache_attrs ⇒ Object
Returns the value of attribute max_cache_attrs.
-
#registry_path ⇒ Object
Returns the value of attribute registry_path.
-
#scheduled_job_detector ⇒ Object
Returns the value of attribute scheduled_job_detector.
-
#sink ⇒ Object
Returns the value of attribute sink.
-
#span_scopes ⇒ Object
Returns the value of attribute span_scopes.
-
#store_environment ⇒ Object
Returns the value of attribute store_environment.
-
#store_ingest_token ⇒ Object
Returns the value of attribute store_ingest_token.
-
#store_query_token ⇒ Object
Returns the value of attribute store_query_token.
-
#store_service ⇒ Object
Returns the value of attribute store_service.
-
#store_url ⇒ Object
Returns the value of attribute store_url.
-
#strict ⇒ Object
Returns the value of attribute strict.
Instance Method Summary collapse
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #registry ⇒ Object
-
#resolved? ⇒ Boolean
True once #resolved_sink has actually built (or attempted to build) a sink; lets WideEvent.shutdown! avoid constructing one from scratch just to shut it down.
- #resolved_sink ⇒ Object
-
#shutdown_store_sender!(timeout: WideEvent::Store::Sender::SHUTDOWN_TIMEOUT) ⇒ Object
Stops the store sender's worker thread (if one was ever built) so tests and process shutdown never leak the background thread.
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/wide_event/configuration.rb', line 30 def initialize @store_url = ENV["WIDE_EVENTS_URL"] @enabled = @store_url.present? || ENV["OTEL_EXPORTER_OTLP_ENDPOINT"].present? @sink = @store_url.present? ? :store : :otel @resolved_sink = nil @store_service = ENV["WIDE_EVENTS_SERVICE"] @store_environment = ENV["WIDE_EVENTS_ENVIRONMENT"] @store_ingest_token = ENV["WIDE_EVENTS_INGEST_TOKEN"] @store_query_token = ENV["WIDE_EVENTS_QUERY_TOKEN"] @store_sender = nil @max_cache_attrs = 10 @span_scopes = { "OpenTelemetry::Instrumentation::PG" => "postgres_query", "OpenTelemetry::Instrumentation::Net::HTTP" => "http_call" } @strict = false @registry_path = nil @registry = nil @logger = nil @error_handler = DEFAULT_ERROR_HANDLER @scheduled_job_detector = SOLID_QUEUE_DETECTOR end |
Instance Attribute Details
#enabled ⇒ Object
Returns the value of attribute enabled.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def enabled @enabled end |
#error_handler ⇒ Object
Returns the value of attribute error_handler.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def error_handler @error_handler end |
#logger ⇒ Object
Returns the value of attribute logger.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def logger @logger end |
#max_cache_attrs ⇒ Object
Returns the value of attribute max_cache_attrs.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def max_cache_attrs @max_cache_attrs end |
#registry_path ⇒ Object
Returns the value of attribute registry_path.
23 24 25 |
# File 'lib/wide_event/configuration.rb', line 23 def registry_path @registry_path end |
#scheduled_job_detector ⇒ Object
Returns the value of attribute scheduled_job_detector.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def scheduled_job_detector @scheduled_job_detector end |
#sink ⇒ Object
Returns the value of attribute sink.
23 24 25 |
# File 'lib/wide_event/configuration.rb', line 23 def sink @sink end |
#span_scopes ⇒ Object
Returns the value of attribute span_scopes.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def span_scopes @span_scopes end |
#store_environment ⇒ Object
Returns the value of attribute store_environment.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def store_environment @store_environment end |
#store_ingest_token ⇒ Object
Returns the value of attribute store_ingest_token.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def store_ingest_token @store_ingest_token end |
#store_query_token ⇒ Object
Returns the value of attribute store_query_token.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def store_query_token @store_query_token end |
#store_service ⇒ Object
Returns the value of attribute store_service.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def store_service @store_service end |
#store_url ⇒ Object
Returns the value of attribute store_url.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def store_url @store_url end |
#strict ⇒ Object
Returns the value of attribute strict.
19 20 21 |
# File 'lib/wide_event/configuration.rb', line 19 def strict @strict end |
Instance Method Details
#registry ⇒ Object
79 80 81 82 |
# File 'lib/wide_event/configuration.rb', line 79 def registry return nil if @registry_path.nil? @registry ||= Registry.load(resolved_registry_path) end |
#resolved? ⇒ Boolean
True once #resolved_sink has actually built (or attempted to build) a sink; lets WideEvent.shutdown! avoid constructing one from scratch just to shut it down.
70 71 72 |
# File 'lib/wide_event/configuration.rb', line 70 def resolved? !@resolved_sink.nil? end |
#resolved_sink ⇒ Object
58 59 60 61 62 63 64 65 |
# File 'lib/wide_event/configuration.rb', line 58 def resolved_sink @resolved_sink ||= case @sink when :otel then Sinks::OtelSpan.new when :log then Sinks::LogLine.new(logger) when :store then build_store_sink else @sink end end |
#shutdown_store_sender!(timeout: WideEvent::Store::Sender::SHUTDOWN_TIMEOUT) ⇒ Object
Stops the store sender's worker thread (if one was ever built) so tests and process shutdown never leak the background thread.
86 87 88 89 |
# File 'lib/wide_event/configuration.rb', line 86 def shutdown_store_sender!(timeout: WideEvent::Store::Sender::SHUTDOWN_TIMEOUT) @store_sender&.shutdown(timeout: timeout) @store_sender = nil end |