lib/elastic_apm/spies/mongo.rb in elastic-apm-1.1.0 vs lib/elastic_apm/spies/mongo.rb in elastic-apm-2.0.0
- old
+ new
@@ -12,11 +12,11 @@
)
end
# @api private
class Subscriber
- TYPE = 'db.mongodb.query'.freeze
+ TYPE = 'db.mongodb.query'
def initialize
@events = {}
end
@@ -35,24 +35,35 @@
private
def push_event(event)
return unless ElasticAPM.current_transaction
- ctx = Span::Context.new(
- instance: event.database_name,
- statement: nil,
- type: 'mongodb'.freeze,
- user: nil
- )
- span = ElasticAPM.span(event.command_name.to_s, TYPE, context: ctx)
+ span =
+ ElasticAPM.start_span(
+ event.command_name.to_s,
+ TYPE,
+ context: build_context(event)
+ )
+
@events[event.operation_id] = span
end
def pop_event(event)
- return unless ElasticAPM.current_transaction
-
+ return unless (curr = ElasticAPM.current_span)
span = @events.delete(event.operation_id)
- span && span.done
+
+ curr == span && ElasticAPM.end_span
+ end
+
+ def build_context(event)
+ Span::Context.new(
+ db: {
+ instance: event.database_name,
+ statement: nil,
+ type: 'mongodb',
+ user: nil
+ }
+ )
end
end
end
register 'Mongo', 'mongo', MongoSpy.new