module BaselineRedRpm::Instruments::ActiveRecord::Adapters::Sqlite3

Constants

IGNORE_STATEMENTS

Public Instance Methods

begin_db_transaction_with_trace() click to toggle source
# File lib/baseline_red_rpm/instruments/active_record/adapters/sqlite3.rb, line 112
def begin_db_transaction_with_trace
  if ::BaselineRedRpm::Tracer.tracing?
    adapter = connection_config.fetch(:adapter)

    span = BaselineRedRpm.tracer.start_span(name || 'SQL', tags: {
      "component" => "ActiveRecord",
      "span.kind" => "client",
      "db.statement" => "BEGIN",
      "db.user" => connection_config.fetch(:username, 'unknown'),
      "db.instance" => connection_config.fetch(:database),
      "db.vendor" => adapter,
      "db.type" => "sql"
    })
    BaselineRedRpm::Utils.log_source_and_backtrace(span, :active_record)
  end

  begin_db_transaction_without_trace
rescue Exception => e
  if span
    span.set_tag('error', true)
    span.log_error(e)
  end
  raise
ensure
  span.finish if span
end
exec_delete_with_trace(sql, name = nil, *args) click to toggle source
# File lib/baseline_red_rpm/instruments/active_record/adapters/sqlite3.rb, line 52
def exec_delete_with_trace(sql, name = nil, *args)
  if ::BaselineRedRpm::Tracer.tracing?
    unless ignore_trace?(name)
      adapter = connection_config.fetch(:adapter)
      sanitized_sql = sanitize_sql(sql, adapter)

      span = BaselineRedRpm.tracer.start_span(name || 'SQL', tags: {
        "component" => "ActiveRecord",
        "span.kind" => "client",
        "db.statement" => sanitized_sql,
        "db.user" => connection_config.fetch(:username, 'unknown'),
        "db.instance" => connection_config.fetch(:database),
        "db.vendor" => adapter,
        "db.type" => "sql"
      })
      BaselineRedRpm::Utils.log_source_and_backtrace(span, :active_record)
    end
  end

  exec_delete_without_trace(sql, name, *args)
rescue Exception => e
  if span
    span.set_tag('error', true)
    span.log_error(e)
  end
  raise
ensure
  span.finish if span
end
exec_insert_with_trace(sql, name = nil, *args) click to toggle source
# File lib/baseline_red_rpm/instruments/active_record/adapters/sqlite3.rb, line 82
def exec_insert_with_trace(sql, name = nil, *args)
  if ::BaselineRedRpm::Tracer.tracing?
    unless ignore_trace?(name)
      adapter = connection_config.fetch(:adapter)
      sanitized_sql = sanitize_sql(sql, adapter)

      span = BaselineRedRpm.tracer.start_span(name || 'SQL', tags: {
        "component" => "ActiveRecord",
        "span.kind" => "client",
        "db.statement" => sanitized_sql,
        "db.user" => connection_config.fetch(:username, 'unknown'),
        "db.instance" => connection_config.fetch(:database),
        "db.vendor" => adapter,
        "db.type" => "sql"
      })
      BaselineRedRpm::Utils.log_source_and_backtrace(span, :active_record)
    end
  end

  exec_insert_without_trace(sql, name, binds, *args)
rescue Exception => e
  if span
    span.set_tag('error', true)
    span.log_error(e)
  end
  raise
ensure
  span.finish if span
end
exec_query_with_trace(sql, name = nil, *args) click to toggle source
# File lib/baseline_red_rpm/instruments/active_record/adapters/sqlite3.rb, line 22
def exec_query_with_trace(sql, name = nil, *args)
  if ::BaselineRedRpm::Tracer.tracing?
    unless ignore_trace?(name)
      adapter = connection_config.fetch(:adapter)
      sanitized_sql = sanitize_sql(sql, adapter)

      span = BaselineRedRpm.tracer.start_span(name || 'SQL', tags: {
        "component" => "ActiveRecord",
        "span.kind" => "client",
        "db.statement" => sanitized_sql,
        "db.user" => connection_config.fetch(:username, 'unknown'),
        "db.instance" => connection_config.fetch(:database),
        "db.vendor" => adapter,
        "db.type" => "sql"
      })
      BaselineRedRpm::Utils.log_source_and_backtrace(span, :active_record)
    end
  end

  exec_query_without_trace(sql, name, *args)
rescue Exception => e
  if span
    span.set_tag('error', true)
    span.log_error(e)
  end
  raise
ensure
  span.finish if span
end
ignore_trace?(name) click to toggle source
# File lib/baseline_red_rpm/instruments/active_record/adapters/sqlite3.rb, line 16
def ignore_trace?(name)
  IGNORE_STATEMENTS[name.to_s] ||
    (name && name.to_sym == :skip_logging) ||
    name == 'ActiveRecord::SchemaMigration Load'
end