Class: SolidObserver::CacheMetricBuffer::MetricStore
- Inherits:
-
Object
- Object
- SolidObserver::CacheMetricBuffer::MetricStore
- Defined in:
- lib/solid_observer/cache_metric_buffer.rb
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.
117 118 119 120 121 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 117 def initialize @mutex = Mutex.new @buffer = {} @metrics = INITIAL_METRICS.dup end |
Instance Method Details
#add(metric_data) ⇒ Object
123 124 125 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 123 def add(metric_data) @mutex.synchronize { add_metric(metric_data) } end |
#clear ⇒ Object
139 140 141 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 139 def clear @mutex.synchronize { @buffer.clear } end |
#drain ⇒ Object
127 128 129 130 131 132 133 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 127 def drain @mutex.synchronize do drained = @buffer.values.map(&:dup) @buffer.clear drained end end |
#metrics ⇒ Object
147 148 149 150 151 152 153 154 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 147 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
166 167 168 169 170 171 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 166 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
156 157 158 159 160 161 162 163 164 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 156 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
135 136 137 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 135 def requeue(metrics_to_flush) @mutex.synchronize { add_metrics_with_capacity(metrics_to_flush + @buffer.values) } end |
#size ⇒ Object
143 144 145 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 143 def size @mutex.synchronize { @buffer.size } end |