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
- .flush_all(store: nil) ⇒ Object
- .flush_dirty(store: nil) ⇒ Object
- .hydrate_all(store: nil) ⇒ Object
- .last_flush_at ⇒ Object
- .register_tracker(name, tracker:, tags:) ⇒ Object
- .registered_trackers ⇒ Object
- .reset! ⇒ Object
- .should_flush? ⇒ Boolean
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_at ⇒ Object
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: } log.info("TrackerPersistence registered tracker=#{name} tags=#{Array().join(',')}") end |
.registered_trackers ⇒ Object
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
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 |