Class: Daemons::Monitor
- Inherits:
-
Object
- Object
- Daemons::Monitor
- Defined in:
- lib/daemons/monitor.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(an_app, options = {}) ⇒ Monitor
constructor
A new instance of Monitor.
- #start(application_group) ⇒ Object
- #stop ⇒ Object
Constructor Details
#initialize(an_app, options = {}) ⇒ Monitor
Returns a new instance of Monitor.
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/daemons/monitor.rb', line 28 def initialize(an_app, = {}) @app = an_app @app_name = an_app.group.app_name + '_monitor' @monitor_interval = [:monitor_interval] || 30 if an_app.pidfile_dir @pid = PidFile.new(an_app.pidfile_dir, @app_name, false) else @pid = PidMem.new end end |
Class Method Details
.find(dir, app_name) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/daemons/monitor.rb', line 7 def self.find(dir, app_name) pid = PidFile.find_files(dir, app_name, false)[0] if pid pid = PidFile.existing(pid) unless PidFile.running?(pid.pid) begin; pid.cleanup; rescue ::Exception; end return end monitor = allocate monitor.instance_variable_set(:@pid, pid) return monitor end nil end |
Instance Method Details
#start(application_group) ⇒ Object
89 90 91 92 93 94 95 96 97 |
# File 'lib/daemons/monitor.rb', line 89 def start(application_group) return if application_group.applications.empty? if @pid.kind_of?(PidFile) start_with_pidfile(application_group) else start_without_pidfile(application_group) end end |
#stop ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/daemons/monitor.rb', line 99 def stop begin pid = @pid.pid Process.kill(Application::SIGNAL, pid) Timeout.timeout(5, TimeoutError) do while Pid.running?(pid) sleep(0.1) end end rescue ::Exception => e $stderr.puts "exception while trying to stop monitor process #{pid}: #{e}" $stderr.puts "deleting pid-file." end # We try to remove the pid-files by ourselves, in case the monitor # didn't clean it up. begin; @pid.zap; rescue ::Exception; end end |