lib/elastic_apm/error_builder.rb in elastic-apm-2.5.0 vs lib/elastic_apm/error_builder.rb in elastic-apm-2.6.0

- old
+ new

@@ -5,41 +5,32 @@ class ErrorBuilder def initialize(agent) @agent = agent end - # rubocop:disable Metrics/MethodLength, Metrics/AbcSize - def build_exception(exception, handled: true) - error = Error.new + def build_exception(exception, context: nil, handled: true) + error = Error.new context: context || Context.new error.exception = Error::Exception.new(exception, handled: handled) if exception.backtrace add_stacktrace error, :exception, exception.backtrace end - add_current_transaction_fields error + add_current_transaction_fields error, ElasticAPM.current_transaction - if (transaction = ElasticAPM.current_transaction) - error.context = transaction.context.dup - error.trace_id = transaction.trace_id - error.transaction_id = transaction.id - error.parent_id = ElasticAPM.current_span&.id || transaction.id - end - error end - # rubocop:enable Metrics/MethodLength, Metrics/AbcSize - def build_log(message, backtrace: nil, **attrs) - error = Error.new + def build_log(message, context: nil, backtrace: nil, **attrs) + error = Error.new context: context || Context.new error.log = Error::Log.new(message, **attrs) if backtrace add_stacktrace error, :log, backtrace end - add_current_transaction_fields error + add_current_transaction_fields error, ElasticAPM.current_transaction error end private @@ -57,12 +48,22 @@ end error.culprit = stacktrace.frames.first.function end - def add_current_transaction_fields(error) - return unless (transaction = ElasticAPM.current_transaction) + # rubocop:disable Metrics/AbcSize + def add_current_transaction_fields(error, transaction) + return unless transaction + error.transaction_id = transaction.id error.transaction = { sampled: transaction.sampled? } + error.trace_id = transaction.trace_id + error.parent_id = ElasticAPM.current_span&.id || transaction.id + + return unless transaction.context + + Util.reverse_merge!(error.context.tags, transaction.context.tags) + Util.reverse_merge!(error.context.custom, transaction.context.custom) end + # rubocop:enable Metrics/AbcSize end end