class Eye::Trigger::WaitDependency
Public Instance Methods
check(transition)
click to toggle source
# File lib/eye/trigger/wait_dependency.rb, line 8 def check(transition) wait_dependency if transition.to_name == :starting end
Private Instance Methods
wait_dependency()
click to toggle source
# File lib/eye/trigger/wait_dependency.rb, line 14 def wait_dependency processes = names.map do |name| Eye::Control.find_nearest_process(name, process.group_name_pure, process.app_name) end.compact return if processes.empty? processes = Eye::Utils::AliveArray.new(processes) processes.each do |p| if p.state_name != :up && (should_start != false) p.schedule command: :start, reason: 'start_dependency' end end res = true processes.pmap do |p| name = p.name res &= process.wait_for_condition(wait_timeout, 0.5) do info "wait for #{name} until it :up" p.state_name == :up end end unless res warn "not waited for #{names} to be up" process.switch :unmonitoring if retry_after process.schedule in: retry_after, command: :start, reason: 'wait_dependency' end raise Eye::Process::StateError, 'stop transition because dependency is not up' end end