diff --git a/lib/elastic_apm/spies/mongo.rb b/lib/elastic_apm/spies/mongo.rb index 8e04f81e8..9b53e7008 100644 --- a/lib/elastic_apm/spies/mongo.rb +++ b/lib/elastic_apm/spies/mongo.rb @@ -38,7 +38,7 @@ class Subscriber EVENT_KEY = :__elastic_instrumenter_mongo_events_key def events - Thread.current[EVENT_KEY] ||= {} + Thread.current[EVENT_KEY] ||= [] end def started(event) @@ -72,7 +72,7 @@ def push_event(event) # and the collection name is at the key `collection` collection = if event.command[event.command_name] == 1 || - event.command[event.command_name].is_a?(BSON::Int64) + event.command[event.command_name].is_a?(BSON::Int64) event.command[:collection] else event.command[event.command_name] @@ -91,14 +91,13 @@ def push_event(event) context: build_context(event) ) - events[event.operation_id] = span + events << span end def pop_event(event) - span = events.delete(event.operation_id) return unless (curr = ElasticAPM.current_span) - curr == span && ElasticAPM.end_span + curr == events[-1] && ElasticAPM.end_span(events.pop) end def build_context(event)