Module: TraceView::Inst::MopedCollection

Includes:
Moped
Defined in:
lib/traceview/inst/moped.rb

Overview

MopedCollection

Constant Summary

Constants included from 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

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Moped

#remote_host

Class Method Details

.included(klass) ⇒ Object



376
377
378
379
380
# File 'lib/traceview/inst/moped.rb', line 376

def self.included(klass)
  TraceView::Inst::Moped::COLLECTION_OPS.each do |m|
    ::TraceView::Util.method_alias(klass, m)
  end
end

Instance Method Details

#aggregate_with_traceview(*pipeline) ⇒ Object



446
447
448
449
450
451
452
453
454
455
# File 'lib/traceview/inst/moped.rb', line 446

def aggregate_with_traceview(*pipeline)
  return aggregate_without_traceview(*pipeline) unless TraceView.tracing?

  report_kvs = extract_trace_details(:aggregate)
  report_kvs[:Query] = pipeline

  TraceView::API.trace(:mongo, report_kvs) do
    aggregate_without_traceview(pipeline)
  end
end

#drop_with_traceviewObject



397
398
399
400
401
402
403
404
405
406
407
# File 'lib/traceview/inst/moped.rb', line 397

def drop_with_traceview
  return drop_without_traceview unless TraceView.tracing?

  # We report :drop_collection here to be consistent
  # with other mongo implementations
  report_kvs = extract_trace_details(:drop_collection)

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

#extract_trace_details(op) ⇒ Object



382
383
384
385
386
387
388
389
390
391
392
393
394
395
# File 'lib/traceview/inst/moped.rb', line 382

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
  report_kvs[:RemoteHost] = remote_host(database.session.cluster.seeds.first)
  report_kvs[:Database] = database.name
  report_kvs[: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

#find_with_traceview(selector = {}) ⇒ Object



409
410
411
412
413
414
415
416
417
418
419
420
421
422
# File 'lib/traceview/inst/moped.rb', line 409

def find_with_traceview(selector = {})
  return find_without_traceview(selector) unless TraceView.tracing?

  begin
    report_kvs = extract_trace_details(:find)
    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
    find_without_traceview(selector)
  end
end

#indexes_with_traceviewObject



424
425
426
427
428
429
430
431
432
# File 'lib/traceview/inst/moped.rb', line 424

def indexes_with_traceview
  return indexes_without_traceview unless TraceView.tracing?

  report_kvs = extract_trace_details(:indexes)

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

#insert_with_traceview(documents, flags = nil) ⇒ Object



434
435
436
437
438
439
440
441
442
443
444
# File 'lib/traceview/inst/moped.rb', line 434

def insert_with_traceview(documents, flags = nil)
  if TraceView.tracing? && !TraceView.tracing_layer_op?(:create_index)
    report_kvs = extract_trace_details(:insert)

    TraceView::API.trace(:mongo, report_kvs) do
      insert_without_traceview(documents, flags)
    end
  else
    insert_without_traceview(documents, flags)
  end
end