Module: DTR::Adapter::Master

Included in:
Master, Monitor::AgentsMonitor
Defined in:
lib/dtr/shared/adapter/base.rb,
lib/dtr/shared/adapter/mortality.rb

Instance Method Summary collapse

Instance Method Details

#do_wakeup_agentsObject



92
93
94
# File 'lib/dtr/shared/adapter/base.rb', line 92

def do_wakeup_agents
  yell_agents("#{Adapter::WAKEUP_MESSAGE} #{DTR.configuration.rinda_server_port} #{DTR.configuration.group}")
end

#group_agents_should_die(group = DTR.configuration.group) ⇒ Object



36
37
38
# File 'lib/dtr/shared/adapter/mortality.rb', line 36

def group_agents_should_die(group = DTR.configuration.group)
  yell_agents("#{Adapter::DEAD_MESSAGE} #{DTR.configuration.rinda_server_port} #{group}")
end

#hypnotize_agentsObject



72
73
74
# File 'lib/dtr/shared/adapter/base.rb', line 72

def hypnotize_agents
  yell_agents("#{Adapter::SLEEP_MESSAGE} #{DTR.configuration.rinda_server_port}")
end

#with_wakeup_agents(&block) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/dtr/shared/adapter/base.rb', line 76

def with_wakeup_agents(&block)
  heartbeat = Thread.new do
    loop do
      do_wakeup_agents
      sleep(DTR.configuration.master_heartbeat_interval)
    end
  end
  #heartbeat thread should have high priority for agent is listening
  heartbeat.priority = Thread.current.priority + 10
  block.call
ensure
  #kill heartbeat first, so that agents wouldn't be wakeup after hypnotized
  Thread.kill heartbeat rescue nil
  hypnotize_agents rescue nil
end