Class: Moped::Database

Inherits:
Object
  • Object
show all
Includes:
TraceView::Inst::Moped
Defined in:
lib/traceview/inst/moped.rb

Constant Summary

Constants included from TraceView::Inst::Moped

TraceView::Inst::Moped::COLLECTION_OPS, TraceView::Inst::Moped::DB_OPS, TraceView::Inst::Moped::FLAVOR, TraceView::Inst::Moped::INDEX_OPS, TraceView::Inst::Moped::QUERY_OPS

Instance Method Summary collapse

Instance Method Details

#command_with_traceview(command) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/traceview/inst/moped.rb', line 55

def command_with_traceview(command)
  if TraceView.tracing? && !TraceView.layer_op && command.key?(:mapreduce)
    begin
      report_kvs = extract_trace_details(:map_reduce)
      report_kvs[:Map_Function] = command[:map]
      report_kvs[:Reduce_Function] = command[:reduce]
    rescue StandardError => e
      TraceView.logger.debug "[traceview/debug] Moped KV collection error: #{e.inspect}"
    end

    TraceView::API.trace('mongo', report_kvs) do
      command_without_traceview(command)
    end
  else
    command_without_traceview(command)
  end
end

#drop_with_traceviewObject



73
74
75
76
77
78
79
80
81
# File 'lib/traceview/inst/moped.rb', line 73

def drop_with_traceview
  return drop_without_traceview unless TraceView.tracing?

  report_kvs = extract_trace_details(:drop_database)

  TraceView::API.trace('mongo', report_kvs) do
    drop_without_traceview
  end
end

#extract_trace_details(op) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/traceview/inst/moped.rb', line 35

def extract_trace_details(op)
  report_kvs = {}
  begin
    report_kvs[:Flavor] = TraceView::Inst::Moped::FLAVOR
    # FIXME: We're only grabbing the first of potentially multiple servers here
    if ::Moped::VERSION < '2.0.0'
      report_kvs[:RemoteHost], report_kvs[:RemotePort] = session.cluster.seeds.first.split(':')
    else
      report_kvs[:RemoteHost] = session.cluster.seeds.first.address.host
      report_kvs[:RemotePort] = session.cluster.seeds.first.address.port
    end
    report_kvs[:Database] = name
    report_kvs[:QueryOp] = op.to_s
    report_kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:moped][:collect_backtraces]
  rescue StandardError => e
    TraceView.logger.debug "[traceview/debug] Moped KV collection error: #{e.inspect}"
  end
  report_kvs
end