class CanvasStatsd::SqlTracker

Attributes

blocked_names[R]
cache_counts[R]
read_counts[R]
write_counts[R]

Public Class Methods

new(opts=nil) click to toggle source
# File lib/canvas_statsd/sql_tracker.rb, line 6
def initialize(opts=nil)
  opts ||= {}
  @blocked_names = opts.fetch(:blocked_names, [])
  @read_counts = opts.fetch(:read_counter, CanvasStatsd::Counter.new('sql.read'))
  @write_counts = opts.fetch(:write_counter, CanvasStatsd::Counter.new('sql.write'))
  @cache_counts = opts.fetch(:cache_counter, CanvasStatsd::Counter.new('sql.cache'))
end

Public Instance Methods

finalize_counts(cookies) click to toggle source
# File lib/canvas_statsd/sql_tracker.rb, line 30
def finalize_counts(cookies)
  [
    read_counts.finalize_count(cookies[0]),
    write_counts.finalize_count(cookies[1]),
    cache_counts.finalize_count(cookies[2])
  ]
end
start() click to toggle source
# File lib/canvas_statsd/sql_tracker.rb, line 14
def start
  [read_counts, write_counts, cache_counts].map(&:start)
end
track(name, sql) click to toggle source
# File lib/canvas_statsd/sql_tracker.rb, line 18
def track name, sql
  return unless sql && accepted_name?(name)

  if name.match(/CACHE/)
    cache_counts.track name
  elsif truncate(sql).match(/SELECT/) || name.match(/LOAD/)
    read_counts.track(sql)
  else
    write_counts.track(sql)
  end
end

Private Instance Methods

accepted_name?(name) click to toggle source
# File lib/canvas_statsd/sql_tracker.rb, line 40
def accepted_name?(name)
  !!(name && !blocked_names.include?(name))
end
truncate(sql, length=15) click to toggle source
# File lib/canvas_statsd/sql_tracker.rb, line 44
def truncate(sql, length=15)
  sql ||= ''
  sql.strip[0..length]
end