module TraceView::Inst::MopedQuery

MopedQuery

Public Class Methods

included(klass) click to toggle source
# File lib/traceview/inst/moped.rb, line 171
def self.included(klass)
  TraceView::Inst::Moped::QUERY_OPS.each do |m|
    ::TraceView::Util.method_alias(klass, m)
  end
end

Public Instance Methods

count_with_traceview() click to toggle source
# File lib/traceview/inst/moped.rb, line 193
def count_with_traceview
  return count_without_traceview unless TraceView.tracing?

  begin
    report_kvs = extract_trace_details(:count)
    report_kvs[:Query] = selector.empty? ? :all : selector.to_json
  rescue StandardError => e
    TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
  end

  TraceView::API.trace(:mongo, report_kvs) do
    count_without_traceview
  end
end
distinct_with_traceview(key) click to toggle source
# File lib/traceview/inst/moped.rb, line 242
def distinct_with_traceview(key)
  return distinct_without_traceview(key) unless TraceView.tracing?

  begin
    report_kvs = extract_trace_details(:distinct)
    report_kvs[:Query] = selector.empty? ? :all : selector.to_json
    report_kvs[:Key] = key.to_s
  rescue StandardError => e
    TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
  end

  TraceView::API.trace(:mongo, report_kvs) do
    distinct_without_traceview(key)
  end
end
explain_with_traceview() click to toggle source
# File lib/traceview/inst/moped.rb, line 307
def explain_with_traceview
  return explain_without_traceview unless TraceView.tracing?

  begin
    report_kvs = extract_trace_details(:explain)
    report_kvs[:Query] = selector.empty? ? :all : selector.to_json
  rescue StandardError => e
    TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
  end

  TraceView::API.trace(:mongo, report_kvs, :explain) do
    explain_without_traceview
  end
end
extract_trace_details(op) click to toggle source
# File lib/traceview/inst/moped.rb, line 177
def extract_trace_details(op)
  report_kvs = {}
  report_kvs[:Flavor] = TraceView::Inst::Moped::FLAVOR
  # FIXME: We're only grabbing the first of potentially multiple servers here
  first = collection.database.session.cluster.seeds.first
  report_kvs[:RemoteHost] = remote_host(first)
  report_kvs[:Database] = collection.database.name
  report_kvs[:Collection] = collection.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] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
ensure
  return report_kvs
end
limit_with_traceview(limit) click to toggle source
# File lib/traceview/inst/moped.rb, line 224
def limit_with_traceview(limit)
  if TraceView.tracing? && !TraceView.tracing_layer_op?(:explain)
    begin
      report_kvs = extract_trace_details(:limit)
      report_kvs[:Query] = selector.empty? ? :all : selector.to_json
      report_kvs[:Limit] = limit.to_s
    rescue StandardError => e
      TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
    end

    TraceView::API.trace(:mongo, report_kvs) do
      limit_without_traceview(limit)
    end
  else
    limit_without_traceview(limit)
  end
end
modify_with_traceview(change, options = {}) click to toggle source
# File lib/traceview/inst/moped.rb, line 322
def modify_with_traceview(change, options = {})
  return modify_without_traceview(change, options) unless TraceView.tracing?

  begin
    report_kvs = extract_trace_details(:modify)
    report_kvs[:Update_Document] = selector.empty? ? :all : selector.to_json
    report_kvs[:Change] = change.to_json
    report_kvs[:Options] = options.to_json
  rescue StandardError => e
    TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
  end

  TraceView::API.trace(:mongo, report_kvs) do
    modify_without_traceview(change, options)
  end
end
remove_all_with_traceview() click to toggle source
# File lib/traceview/inst/moped.rb, line 354
def remove_all_with_traceview
  return remove_all_without_traceview unless TraceView.tracing?

  begin
    report_kvs = extract_trace_details(:remove_all)
    report_kvs[:Query] = selector.to_json
  rescue StandardError => e
    TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
  end

  TraceView::API.trace(:mongo, report_kvs) do
    remove_all_without_traceview
  end
end
remove_with_traceview() click to toggle source
# File lib/traceview/inst/moped.rb, line 339
def remove_with_traceview
  return remove_without_traceview unless TraceView.tracing?

  begin
    report_kvs = extract_trace_details(:remove)
    report_kvs[:Query] = selector.to_json
  rescue StandardError => e
    TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
  end

  TraceView::API.trace(:mongo, report_kvs) do
    remove_without_traceview
  end
end
sort_with_traceview(sort) click to toggle source
# File lib/traceview/inst/moped.rb, line 208
def sort_with_traceview(sort)
  return sort_without_traceview(sort) unless TraceView.tracing?

  begin
    report_kvs = extract_trace_details(:sort)
    report_kvs[:Query] = selector.empty? ? :all : selector.to_json
    report_kvs[:Order] = sort.to_s
  rescue StandardError => e
    TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
  end

  TraceView::API.trace(:mongo, report_kvs) do
    sort_without_traceview(sort)
  end
end
update_all_with_traceview(change) click to toggle source
# File lib/traceview/inst/moped.rb, line 276
def update_all_with_traceview(change)
  return update_all_without_traceview(change) unless TraceView.tracing?

  begin
    report_kvs = extract_trace_details(:update_all)
    report_kvs[:Update_Document] = change.to_json
  rescue StandardError => e
    TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
  end

  TraceView::API.trace(:mongo, report_kvs, :update_all) do
    update_all_without_traceview(change)
  end
end
update_with_traceview(change, flags = nil) click to toggle source
# File lib/traceview/inst/moped.rb, line 258
def update_with_traceview(change, flags = nil)
  if TraceView.tracing? && !TraceView.tracing_layer_op?([:update_all, :upsert])
    begin
      report_kvs = extract_trace_details(:update)
      report_kvs[:Flags] = flags.to_s if flags
      report_kvs[:Update_Document] = change.to_json
    rescue StandardError => e
      TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
    end

    TraceView::API.trace(:mongo, report_kvs) do
      update_without_traceview(change, flags)
    end
  else
    update_without_traceview(change, flags)
  end
end
upsert_with_traceview(change) click to toggle source
# File lib/traceview/inst/moped.rb, line 291
def upsert_with_traceview(change)
  return upsert_without_traceview(change) unless TraceView.tracing?

  begin
    report_kvs = extract_trace_details(:upsert)
    report_kvs[:Query] = selector.to_json
    report_kvs[:Update_Document] = change.to_json
  rescue StandardError => e
    TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
  end

  TraceView::API.trace(:mongo, report_kvs, :upsert) do
    upsert_without_traceview(change)
  end
end