Class: DBPurger::Metrics

Inherits:
Object
  • Object
show all
Defined in:
lib/db-purger/metrics.rb

Overview

DBPurger::Metrics keeps track of each part of the purge process

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMetrics

Returns a new instance of Metrics.



13
14
15
# File 'lib/db-purger/metrics.rb', line 13

def initialize
  reset!
end

Instance Attribute Details

#delete_statsObject (readonly)

Returns the value of attribute delete_stats.



6
7
8
# File 'lib/db-purger/metrics.rb', line 6

def delete_stats
  @delete_stats
end

#filter_statsObject (readonly)

Returns the value of attribute filter_stats.



6
7
8
# File 'lib/db-purger/metrics.rb', line 6

def filter_stats
  @filter_stats
end

#finished_atObject (readonly)

Returns the value of attribute finished_at.



6
7
8
# File 'lib/db-purger/metrics.rb', line 6

def finished_at
  @finished_at
end

#lookup_statsObject (readonly)

Returns the value of attribute lookup_stats.



6
7
8
# File 'lib/db-purger/metrics.rb', line 6

def lookup_stats
  @lookup_stats
end

#purge_statsObject (readonly)

Returns the value of attribute purge_stats.



6
7
8
# File 'lib/db-purger/metrics.rb', line 6

def purge_stats
  @purge_stats
end

#started_atObject (readonly)

Returns the value of attribute started_at.



6
7
8
# File 'lib/db-purger/metrics.rb', line 6

def started_at
  @started_at
end

Instance Method Details

#as_json(_opts = {}) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/db-purger/metrics.rb', line 68

def as_json(_opts = {})
  {
    took: elapsed_time_in_seconds,
    started_at: @started_at,
    finished_at: @finished_at,
    purge_stats: @purge_stats,
    delete_stats: @delete_stats,
    lookup_stats: @lookup_stats,
    filter_stats: @filter_stats
  }
end

#elapsed_time_in_secondsObject



30
31
32
# File 'lib/db-purger/metrics.rb', line 30

def elapsed_time_in_seconds
  (@finished_at || Time.now) - @started_at
end

#finished!Object



26
27
28
# File 'lib/db-purger/metrics.rb', line 26

def finished!
  @finished_at = Time.now
end

#reset!Object



17
18
19
20
21
22
23
24
# File 'lib/db-purger/metrics.rb', line 17

def reset!
  @started_at = Time.now
  @purge_stats = {}
  @delete_stats = {}
  @lookup_stats = {}
  @filter_stats = {}
  @finished_at = nil
end

#update_delete_records_stats(table_name, duration, num_deleted, num_expected_to_delete = nil) ⇒ Object



42
43
44
45
46
47
48
49
# File 'lib/db-purger/metrics.rb', line 42

def update_delete_records_stats(table_name, duration, num_deleted, num_expected_to_delete = nil)
  stats = (@delete_stats[table_name] ||= Hash.new(0))
  stats[:duration] += duration
  stats[:num_delete_queries] += 1
  stats[:num_deleted] += num_deleted
  stats[:num_expected_to_delete] += num_expected_to_delete if num_expected_to_delete
  stats
end

#update_lookup_stats(table_name, duration, records_found) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/db-purger/metrics.rb', line 51

def update_lookup_stats(table_name, duration, records_found)
  stats = (@lookup_stats[table_name] ||= Hash.new(0))
  stats[:duration] += duration
  stats[:num_lookups] += 1
  stats[:records_found] += records_found
  stats
end

#update_purge_stats(table_name, duration, num_records) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/db-purger/metrics.rb', line 34

def update_purge_stats(table_name, duration, num_records)
  stats = (@purge_stats[table_name] ||= Hash.new(0))
  stats[:duration] += duration
  stats[:num_purges] += 1
  stats[:num_records] += num_records
  stats
end

#update_search_filter_stats(table_name, duration, records_found, records_selected) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/db-purger/metrics.rb', line 59

def update_search_filter_stats(table_name, duration, records_found, records_selected)
  stats = (@filter_stats[table_name] ||= Hash.new(0))
  stats[:duration] += duration
  stats[:num_lookups] += 1
  stats[:records_found] += records_found
  stats[:records_selected] += records_selected
  stats
end