Class: Appsignal::Hooks::MongoMonitorSubscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/appsignal/integrations/mongo_ruby_driver.rb

Instance Method Summary collapse

Instance Method Details

#failed(event) ⇒ Object

Called by Mongo::Monitor when query fails



26
27
28
29
# File 'lib/appsignal/integrations/mongo_ruby_driver.rb', line 26

def failed(event)
  # Finish the event as failed
  finish('FAILED', event)
end

#finish(result, event) ⇒ Object

Finishes the event in the AppSignal extension



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/appsignal/integrations/mongo_ruby_driver.rb', line 32

def finish(result, event)
  transaction = Appsignal::Transaction.current
  return if transaction.nil_transaction?
  return if transaction.paused?

  # Get the query from the transaction store
  store   = transaction.store('mongo_driver')
  command = store[event.request_id].inspect

  # Finish the event in the extension.
  Appsignal::Extension.finish_event(
    transaction.transaction_index,
    'query.mongodb',
    event.command_name.to_s,
    %Q(#{event.database_name} | #{result} | #{command})
  )
end

#started(event) ⇒ Object

Called by Mongo::Monitor when query starts



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/appsignal/integrations/mongo_ruby_driver.rb', line 6

def started(event)
  transaction = Appsignal::Transaction.current
  return if transaction.nil_transaction?
  return if transaction.paused?

  # Store the query on the transaction, we need it when the event finishes
  store                   = transaction.store('mongo_driver')
  store[event.request_id] = Appsignal::Utils.sanitize(event.command)

  # Start this event
  Appsignal::Extension.start_event(transaction.transaction_index)
end

#succeeded(event) ⇒ Object

Called by Mongo::Monitor when query succeeds



20
21
22
23
# File 'lib/appsignal/integrations/mongo_ruby_driver.rb', line 20

def succeeded(event)
  # Finish the event as succeeded
  finish('SUCCEEDED', event)
end