Class: SolidObserver::CacheMetricBuffer
- Inherits:
-
Object
- Object
- SolidObserver::CacheMetricBuffer
- Includes:
- Singleton
- Defined in:
- lib/solid_observer/cache_metric_buffer.rb
Defined Under Namespace
Classes: MetricStore
Constant Summary collapse
- INITIAL_METRICS =
{ flush_failures_count: 0, drops_count: 0, last_flush_at: nil, last_flush_duration_ms: nil, last_flush_error: nil }.freeze
Instance Method Summary collapse
- #clear ⇒ Object
- #flush ⇒ Object
- #flush! ⇒ Object
- #increment(metric_data) ⇒ Object
-
#initialize ⇒ CacheMetricBuffer
constructor
A new instance of CacheMetricBuffer.
- #metrics ⇒ Object
- #shutdown ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize ⇒ CacheMetricBuffer
Returns a new instance of CacheMetricBuffer.
20 21 22 23 24 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 20 def initialize @store = MetricStore.new @timer_mutex = Mutex.new @timer_task = nil end |
Instance Method Details
#clear ⇒ Object
50 51 52 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 50 def clear @store.clear end |
#flush ⇒ Object
42 43 44 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 42 def flush flush! end |
#flush! ⇒ Object
35 36 37 38 39 40 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 35 def flush! metrics_to_flush = @store.drain return if metrics_to_flush.empty? flush_metrics(metrics_to_flush, monotonic_ms) end |
#increment(metric_data) ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 26 def increment(metric_data) config = SolidObserver.config return unless config.persistence_mode? @store.add(metric_data) ensure_timer_running flush! if size >= config.buffer_size end |
#metrics ⇒ Object
54 55 56 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 54 def metrics @store.metrics end |
#shutdown ⇒ Object
58 59 60 61 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 58 def shutdown stop_timer flush! end |
#size ⇒ Object
46 47 48 |
# File 'lib/solid_observer/cache_metric_buffer.rb', line 46 def size @store.size end |