Class: Ring::SQA::Analyzer
- Inherits:
-
Object
- Object
- Ring::SQA::Analyzer
- Defined in:
- lib/ring/sqa/analyzer.rb
Constant Summary collapse
- INTERVAL =
how often to run analyze loop
60
- INFLIGHT_WAIT =
how long to wait for inflight records
1
Instance Method Summary collapse
Instance Method Details
#run ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/ring/sqa/analyzer.rb', line 9 def run sleep INTERVAL loop do start = Time.now @db.purge @db_id_seen, records = @db.nodes_down(@db_id_seen+1) sleep INFLIGHT_WAIT records = records.all @buffer.push records.map { |record| record.peer } @buffer.exceed_median? ? @alarm.set(@buffer) : @alarm.clear(@buffer) delay = INTERVAL-(Time.now-start) # in case delay happens to be too big if delay > INTERVAL delay = INTERVAL Log.warn "delay became larger than #{INTERVAL}, capping it. (did ntp just sync?)" end if delay > 0 sleep delay else Log.error "Analyzer loop took longer than #{INTERVAL}, wanted to sleep for #{delay}s" end end end |