Class: SolidObserver::CableMetricBuffer::MetricStore
- Inherits:
-
Object
- Object
- SolidObserver::CableMetricBuffer::MetricStore
- Defined in:
- lib/solid_observer/cable_metric_buffer.rb
Constant Summary collapse
- COUNTERS =
%i[ broadcasts_count transmissions_count confirmations_count rejections_count perform_actions_count errors_count ].freeze
Instance Method Summary collapse
- #add(metric_data) ⇒ Object
- #clear ⇒ Object
- #drain ⇒ Object
-
#initialize ⇒ MetricStore
constructor
A new instance of MetricStore.
- #metrics ⇒ Object
- #record_flush_failure(error) ⇒ Object
- #record_flush_success(duration_ms) ⇒ Object
- #requeue(metrics_to_flush) ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize ⇒ MetricStore
Returns a new instance of MetricStore.
126 127 128 129 130 |
# File 'lib/solid_observer/cable_metric_buffer.rb', line 126 def initialize @mutex = Mutex.new @buffer = {} @metrics = INITIAL_METRICS.dup end |
Instance Method Details
#add(metric_data) ⇒ Object
132 133 134 |
# File 'lib/solid_observer/cable_metric_buffer.rb', line 132 def add(metric_data) @mutex.synchronize { add_metric(metric_data) } end |
#clear ⇒ Object
148 149 150 |
# File 'lib/solid_observer/cable_metric_buffer.rb', line 148 def clear @mutex.synchronize { @buffer.clear } end |
#drain ⇒ Object
136 137 138 139 140 141 142 |
# File 'lib/solid_observer/cable_metric_buffer.rb', line 136 def drain @mutex.synchronize do drained = @buffer.values.map(&:dup) @buffer.clear drained end end |
#metrics ⇒ Object
156 157 158 159 160 161 162 163 |
# File 'lib/solid_observer/cable_metric_buffer.rb', line 156 def metrics @mutex.synchronize do { size: @buffer.size, max_buffer_size: SolidObserver.config.max_buffer_size }.merge(@metrics.dup) end end |
#record_flush_failure(error) ⇒ Object
175 176 177 178 179 180 |
# File 'lib/solid_observer/cable_metric_buffer.rb', line 175 def record_flush_failure(error) @mutex.synchronize do @metrics[:flush_failures_count] += 1 @metrics[:last_flush_error] = error. end end |
#record_flush_success(duration_ms) ⇒ Object
165 166 167 168 169 170 171 172 173 |
# File 'lib/solid_observer/cable_metric_buffer.rb', line 165 def record_flush_success(duration_ms) @mutex.synchronize do @metrics.merge!( last_flush_at: Time.current, last_flush_duration_ms: duration_ms, last_flush_error: nil ) end end |
#requeue(metrics_to_flush) ⇒ Object
144 145 146 |
# File 'lib/solid_observer/cable_metric_buffer.rb', line 144 def requeue(metrics_to_flush) @mutex.synchronize { add_metrics_with_capacity(metrics_to_flush + @buffer.values) } end |
#size ⇒ Object
152 153 154 |
# File 'lib/solid_observer/cable_metric_buffer.rb', line 152 def size @mutex.synchronize { @buffer.size } end |