Method: OneApm::Agent::Instrumentation::Moped#determine_operation_and_collection

Defined in:
lib/one_apm/inst/nosql/mongo_moped.rb

#determine_operation_and_collection(operation) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/one_apm/inst/nosql/mongo_moped.rb', line 60

def determine_operation_and_collection(operation)
  log_statement = operation.log_inspect.encode("UTF-8")
  collection = "Unknown"
  if operation.respond_to?(:collection)
    collection = operation.collection
  end
  operation_name = log_statement.split[0]
  if operation_name == 'COMMAND' && log_statement.include?(":mapreduce")
    operation_name = 'MAPREDUCE'
    collection = log_statement[/:mapreduce=>"([^"]+)/,1]
  elsif operation_name == 'COMMAND' && log_statement.include?(":count")
    operation_name = 'COUNT'
    collection = log_statement[/:count=>"([^"]+)/,1]
  elsif operation_name == 'COMMAND' && log_statement.include?(":aggregate")
    operation_name = 'AGGREGATE'
    collection = log_statement[/:aggregate=>"([^"]+)/,1]
  elsif operation_name == 'COMMAND' && log_statement.include?(":findAndModify")
    operation_name = 'FIND_AND_MODIFY'
    collection = log_statement[/:findAndModify=>"([^"]+)/,1]
  end
  return operation_name, collection
end