Module: Legion::Gaia::TrackerPersistence

Extended by:
Logging::Helper
Defined in:
lib/legion/gaia/tracker_persistence.rb

Constant Summary collapse

FLUSH_INTERVAL =

5 minutes

300

Class Method Summary collapse

Class Method Details

.flush_all(store: nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/legion/gaia/tracker_persistence.rb', line 49

def flush_all(store: nil)
  return unless store

  failed = false
  registered_trackers.each_value do |entry|
    failed ||= !flush_tracker(entry[:tracker], store: store)
  end
  @last_flush_at = Time.now.utc unless failed
  log.info("TrackerPersistence flushed all trackers count=#{registered_trackers.size}")
rescue StandardError => e
  handle_exception(e, level: :warn, operation: 'gaia.tracker_persistence.flush_all')
end

.flush_dirty(store: nil) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/legion/gaia/tracker_persistence.rb', line 24

def flush_dirty(store: nil)
  return unless store

  failed = false
  flushed = 0
  registered_trackers.each_value do |entry|
    tracker = entry[:tracker]
    next unless tracker.dirty?

    if flush_tracker(tracker, store: store)
      flushed += 1
    else
      failed = true
    end
  end
  @last_flush_at = Time.now.utc unless failed
  if failed
    log.warn("TrackerPersistence flush_dirty completed with errors flushed=#{flushed}")
  else
    log.info("TrackerPersistence flushed dirty trackers flushed=#{flushed}")
  end
rescue StandardError => e
  handle_exception(e, level: :warn, operation: 'gaia.tracker_persistence.flush_dirty')
end

.hydrate_all(store: nil) ⇒ Object



62
63
64
65
66
67
68
69
70
71
# File 'lib/legion/gaia/tracker_persistence.rb', line 62

def hydrate_all(store: nil)
  return unless store

  registered_trackers.each_value do |entry|
    entry[:tracker].from_apollo(store: store)
  end
  log.info("TrackerPersistence hydrated trackers count=#{registered_trackers.size}")
rescue StandardError => e
  handle_exception(e, level: :warn, operation: 'gaia.tracker_persistence.hydrate_all')
end

.last_flush_atObject



73
74
75
# File 'lib/legion/gaia/tracker_persistence.rb', line 73

def last_flush_at
  @last_flush_at
end

.register_tracker(name, tracker:, tags:) ⇒ Object



14
15
16
17
18
# File 'lib/legion/gaia/tracker_persistence.rb', line 14

def register_tracker(name, tracker:, tags:)
  @trackers ||= {}
  @trackers[name] = { tracker: tracker, tags: tags }
  log.info("TrackerPersistence registered tracker=#{name} tags=#{Array(tags).join(',')}")
end

.registered_trackersObject



20
21
22
# File 'lib/legion/gaia/tracker_persistence.rb', line 20

def registered_trackers
  @trackers || {}
end

.reset!Object



83
84
85
86
# File 'lib/legion/gaia/tracker_persistence.rb', line 83

def reset!
  @trackers = {}
  @last_flush_at = nil
end

.should_flush?Boolean

Returns:

  • (Boolean)


77
78
79
80
81
# File 'lib/legion/gaia/tracker_persistence.rb', line 77

def should_flush?
  return true if @last_flush_at.nil?

  (Time.now.utc - @last_flush_at) >= FLUSH_INTERVAL
end