module Sequel::Instrumentation

Constants

COMMON_TAGS
VERSION

Attributes

tracer[RW]

Public Class Methods

instrument(tracer: OpenTracing.global_tracer) click to toggle source
# File lib/sequel/instrumentation.rb, line 17
def instrument(tracer: OpenTracing.global_tracer)
  begin
    require 'sequel'
  rescue LoadError
    return
  end

  @tracer = tracer

  require 'sequel/extensions/database_instrumentation'
  require 'sequel/extensions/dataset_instrumentation'

  Sequel::Database.extension :database_instrumentation
  Sequel::Database.extension :dataset_instrumentation
end
trace_query(name, tags) { || ... } click to toggle source

This method sets up a span and yields the block. Any errors will be caught and tagged before being passed up.

# File lib/sequel/instrumentation.rb, line 35
def trace_query(name, tags)
  tags.merge!(COMMON_TAGS)

  scope = @tracer.start_active_span(name, tags: tags)

  yield
rescue StandardError => error
  if scope
    scope.span.record_exception(error)
  end

  raise error
ensure
  scope.close if scope
end