Class: SolidObserver::CacheMetricBuffer

Inherits:
Object
  • Object
show all
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

Constructor Details

#initializeCacheMetricBuffer

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

#clearObject



50
51
52
# File 'lib/solid_observer/cache_metric_buffer.rb', line 50

def clear
  @store.clear
end

#flushObject



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

#metricsObject



54
55
56
# File 'lib/solid_observer/cache_metric_buffer.rb', line 54

def metrics
  @store.metrics
end

#shutdownObject



58
59
60
61
# File 'lib/solid_observer/cache_metric_buffer.rb', line 58

def shutdown
  stop_timer
  flush!
end

#sizeObject



46
47
48
# File 'lib/solid_observer/cache_metric_buffer.rb', line 46

def size
  @store.size
end