Class: Moped::Collection

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

Constant Summary

Constants included from Oboe::Inst::Moped

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

Instance Method Summary collapse

Instance Method Details

#aggregate_with_oboe(pipeline) ⇒ Object



464
465
466
467
468
469
470
471
472
473
474
# File 'lib/oboe/inst/moped.rb', line 464

def aggregate_with_oboe(pipeline)
  if Oboe.tracing?
    report_kvs = extract_trace_details(:aggregate)

    Oboe::API.trace('mongo', report_kvs) do
      aggregate_without_oboe(pipeline)
    end
  else
    aggregate_without_oboe(pipeline)
  end
end

#drop_with_oboeObject



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

def drop_with_oboe
  if Oboe.tracing?
    # We report :drop_collection here to be consistent
    # with other mongo implementations
    report_kvs = extract_trace_details(:drop_collection)

    Oboe::API.trace('mongo', report_kvs) do
      drop_without_oboe
    end
  else
    drop_without_oboe
  end
end

#extract_trace_details(op) ⇒ Object



393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
# File 'lib/oboe/inst/moped.rb', line 393

def extract_trace_details(op)
  report_kvs = {}
  begin
    report_kvs[:Flavor] = Oboe::Inst::Moped::FLAVOR
    # FIXME: We're only grabbing the first of potentially multiple servers here
    report_kvs[:RemoteHost], report_kvs[:RemotePort] = @database.session.cluster.seeds.first.split(':')
    report_kvs[:Database] = @database.name
    report_kvs[:Collection] = @name
    report_kvs[:QueryOp] = op.to_s
    report_kvs[:Backtrace] = Oboe::API.backtrace if Oboe::Config[:moped][:collect_backtraces]
  rescue Exception => e
    Oboe.logger.debug "[oboe/debug] Moped KV collection error: #{e.inspect}"
  end
  report_kvs
end

#find_with_oboe(selector = {}) ⇒ Object



423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
# File 'lib/oboe/inst/moped.rb', line 423

def find_with_oboe(selector = {})
  if Oboe.tracing?
    begin
      report_kvs = extract_trace_details(:find)
      report_kvs[:Query] = selector.empty? ? "all" : selector.to_json
    rescue Exception => e
      Oboe.logger.debug "[oboe/debug] Moped KV collection error: #{e.inspect}"
    end

    Oboe::API.trace('mongo', report_kvs) do
      find_without_oboe(selector)
    end
  else
    find_without_oboe(selector)
  end
end

#indexes_with_oboeObject



440
441
442
443
444
445
446
447
448
449
450
# File 'lib/oboe/inst/moped.rb', line 440

def indexes_with_oboe
  if Oboe.tracing?
    report_kvs = extract_trace_details(:indexes)

    Oboe::API.trace('mongo', report_kvs) do
      indexes_without_oboe
    end
  else
    indexes_without_oboe
  end
end

#insert_with_oboe(documents, flags = nil) ⇒ Object



452
453
454
455
456
457
458
459
460
461
462
# File 'lib/oboe/inst/moped.rb', line 452

def insert_with_oboe(documents, flags = nil)
  if Oboe.tracing? and not Oboe::Context.tracing_layer_op?(:create_index)
    report_kvs = extract_trace_details(:insert)

    Oboe::API.trace('mongo', report_kvs) do
      insert_without_oboe(documents, flags)
    end
  else
    insert_without_oboe(documents, flags)
  end
end