Sha256: 2bfdfb7805bf6c51a93d21fbfb2fd07ac7ed72eb98906446dda402d0b1844670
Contents?: true
Size: 1.59 KB
Versions: 4
Compression:
Stored size: 1.59 KB
Contents
class Eye::Trigger::Flapping < Eye::Trigger # trigger :flapping, :times => 10, :within => 1.minute, # :retry_in => 10.minutes, :retry_times => 15 param :times, [Fixnum], true, 5 param :within, [Float, Fixnum], true param :retry_in, [Float, Fixnum] param :retry_times, [Fixnum] param :reretry_in, [Float, Fixnum] param :reretry_times, [Fixnum] def initialize(*args) super clear_counters end def check(transition) on_flapping if transition.event == :crashed && !good? end private def clear_counters @retry_times = 0 @reretry_times = 0 end def good? down_count = 0 process.states_history.states_for_period(within, @last_at) do |s| down_count += 1 if s[:state] == :down end if down_count >= times @last_at = process.states_history.last_state_changed_at false else true end end def on_flapping debug { 'flapping recognized!!!' } process.notify :error, 'flapping!' process.schedule :unmonitor, Eye::Reason::Flapping.new(:flapping) return unless retry_in if !retry_times || (retry_times && @retry_times < retry_times) @retry_times += 1 process.schedule_in(retry_in.to_f, :conditional_start, Eye::Reason::Flapping.new('retry start after flapping')) else if reretry_in if !reretry_times || (reretry_times && @reretry_times < reretry_times) @retry_times = 0 @reretry_times += 1 process.schedule_in(reretry_in.to_f, :conditional_start, Eye::Reason::Flapping.new('reretry start after flapping')) end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
eye-0.8.1 | lib/eye/trigger/flapping.rb |
eye-0.8.celluloid15 | lib/eye/trigger/flapping.rb |
eye-0.8 | lib/eye/trigger/flapping.rb |
eye-0.8.rc | lib/eye/trigger/flapping.rb |