Sha256: b74cd44033b6ffde59bca00623b4a5ea66ee38f4f19f2ff5b047c686de21da17
Contents?: true
Size: 1.27 KB
Versions: 1
Compression:
Stored size: 1.27 KB
Contents
# frozen_string_literal: true module ActiveJob module Traceable extend ActiveSupport::Concern included do attr_accessor :tracing_info def initialize(*args) super(*args) @tracing_info = Traceable.tracing_info_getter.call.deep_stringify_keys end ruby2_keywords :initialize if respond_to?(:ruby2_keywords, true) def serialize add_telemetry_data! super.merge!('tracing_info' => tracing_info) end def deserialize(job_data) super(job_data) if job_data['tracing_info'].is_a?(Hash) self.tracing_info = job_data['tracing_info'] end add_telemetry_data! Traceable.tracing_info_setter.call(tracing_info.with_indifferent_access) end end private def add_telemetry_data! if ENV["OTEL_EXPORTER_OTLP_ENDPOINT"].present? current_span = OpenTelemetry::Trace.current_span @tracing_info["trace_id"] = current_span.context.trace_id.unpack1("H*") @tracing_info["span_id"] = current_span.context.span_id.unpack1("H*") end end class << self def tracing_info_getter @tracing_info_getter || -> { {} } end def tracing_info_setter @tracing_info_setter || -> {} end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activejob-traceable-0.4.2 | lib/activejob/traceable/traceable.rb |