class ServiceJynx::Jynx
Attributes
alive[RW]
down_at[RW]
errors[RW]
grace_period[RW]
max_errors[RW]
name[RW]
time_window_in_seconds[RW]
Public Class Methods
new(name, options)
click to toggle source
# File lib/service_jynx.rb, line 47 def initialize(name, options) @name = name @down_at = 0 @alive = true @errors = [] opts = { time_window_in_seconds: 10, max_errors: 40, grace_period: 360 }.merge!(options) @time_window_in_seconds = opts[:time_window_in_seconds] @max_errors = opts[:max_errors] @grace_period = opts[:grace_period] end
Public Instance Methods
alive?()
click to toggle source
# File lib/service_jynx.rb, line 80 def alive? return true if @alive near_past = Time.now.to_i - @grace_period up! if (@down_at < near_past) and return true false end
clean_aged(time_now)
click to toggle source
clean up errors that are older than time_window_in_secons
# File lib/service_jynx.rb, line 63 def clean_aged(time_now) near_past = time_now - @time_window_in_seconds @errors = @errors.reverse.select{|time_stamp| time_stamp > near_past }.reverse.to_a end
down!(reason)
click to toggle source
# File lib/service_jynx.rb, line 68 def down!(reason) @alive = false @down_at = Time.now.to_i LoggerJynx.logger.error "Shutting down [#{@name}] #{reason} at #{@down_at}." end
up!()
click to toggle source
# File lib/service_jynx.rb, line 74 def up! LoggerJynx.logger.error "Upping [#{@name}]." @alive = true @down_at = 0 end