class ActiveRecord::OpenTracing::Processor
Constants
- COMPONENT_NAME
- DB_TYPE
- DEFAULT_OPERATION_NAME
- SPAN_KIND
Attributes
sanitizer[R]
sql_logging_enabled[R]
tracer[R]
Public Class Methods
new(tracer, sanitizer: nil, sql_logging_enabled: true)
click to toggle source
# File lib/active_record/open_tracing/processor.rb, line 13 def initialize(tracer, sanitizer: nil, sql_logging_enabled: true) @tracer = tracer @sanitizer = sanitizer @sql_logging_enabled = sql_logging_enabled end
Public Instance Methods
call(_event_name, start, finish, _id, payload)
click to toggle source
# File lib/active_record/open_tracing/processor.rb, line 19 def call(_event_name, start, finish, _id, payload) span = tracer.start_span( payload[:name] || DEFAULT_OPERATION_NAME, start_time: start, tags: tags_for_payload(payload) ) if (exception = payload[:exception_object]) span.set_tag("error", true) span.log_kv(exception_metadata(exception)) end span.finish(end_time: finish) end
Private Instance Methods
connection_config()
click to toggle source
# File lib/active_record/open_tracing/processor.rb, line 78 def connection_config @connection_config ||= ActiveRecord::Base.connection_config end
db_instance()
click to toggle source
# File lib/active_record/open_tracing/processor.rb, line 74 def db_instance @db_instance ||= connection_config.fetch(:database) end
db_statement(payload)
click to toggle source
# File lib/active_record/open_tracing/processor.rb, line 57 def db_statement(payload) sql_logging_enabled ? { "db.statement" => sanitize_sql(payload.fetch(:sql).squish) } : {} end
exception_metadata(exception)
click to toggle source
# File lib/active_record/open_tracing/processor.rb, line 36 def exception_metadata(exception) { event: "error", 'error.kind': exception.class.to_s, 'error.object': exception, message: exception.message, stack: exception.backtrace.join("\n") } end
peer_address_tag()
click to toggle source
# File lib/active_record/open_tracing/processor.rb, line 65 def peer_address_tag @peer_address_tag ||= [ "#{connection_config.fetch(:adapter)}://", connection_config[:username], connection_config[:host] && "@#{connection_config[:host]}", "/#{db_instance}" ].join end
sanitize_sql(sql)
click to toggle source
# File lib/active_record/open_tracing/processor.rb, line 61 def sanitize_sql(sql) sanitizer ? sanitizer.sanitize(sql) : sql end