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