lib/elastic_apm/spies/mongo.rb in elastic-apm-2.9.1 vs lib/elastic_apm/spies/mongo.rb in elastic-apm-2.10.0

- old
+ new

@@ -32,22 +32,33 @@ pop_event(event) end private + # rubocop:disable Metrics/MethodLength def push_event(event) return unless ElasticAPM.current_transaction + # Some MongoDB commands are not on collections but rather are db + # admin commands. For these commands, the value at the `command_name` + # key is the integer 1. + unless event.command[event.command_name] == 1 + collection = event.command[event.command_name] + end + name = [event.database_name, + collection, + event.command_name].compact.join('.') span = ElasticAPM.start_span( - event.command_name.to_s, + name, TYPE, context: build_context(event) ) @events[event.operation_id] = span end + # rubocop:enable Metrics/MethodLength def pop_event(event) return unless (curr = ElasticAPM.current_span) span = @events.delete(event.operation_id) @@ -56,10 +67,10 @@ def build_context(event) Span::Context.new( db: { instance: event.database_name, - statement: nil, + statement: event.command.to_s, type: 'mongodb', user: nil } ) end