From 890833241226b54b636f55f11c319c6de0bf18ac Mon Sep 17 00:00:00 2001 From: tom Date: Fri, 11 Jan 2008 17:02:47 -0800 Subject: [PATCH] more diagnostics --- lib/god.rb | 8 +++++--- lib/god/diagnostics.rb | 27 +++++++++++++++++++++++++++ lib/god/event_handler.rb | 8 +++++++- lib/god/timer.rb | 4 +++- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/lib/god.rb b/lib/god.rb index ed82193..6df92ee 100644 --- a/lib/god.rb +++ b/lib/god.rb @@ -128,7 +128,7 @@ end module God VERSION = '0.6.6' - LOG_BUFFER_SIZE_DEFAULT = 1000 + LOG_BUFFER_SIZE_DEFAULT = 10 PID_FILE_DIRECTORY_DEFAULT = '/var/run/god' DRB_PORT_DEFAULT = 17165 DRB_ALLOW_DEFAULT = ['127.0.0.1'] @@ -540,6 +540,10 @@ module God # # Returns nothing def self.start + # start_dike + # BleakHouseDiagnostic.install + # BleakHouseDiagnostic.spin + self.internal_init self.setup self.validater @@ -562,8 +566,6 @@ module God # mark as running self.running = true - # start_dike - # join the timer thread so we don't exit Timer.get.join end diff --git a/lib/god/diagnostics.rb b/lib/god/diagnostics.rb index c59112b..388a06b 100644 --- a/lib/god/diagnostics.rb +++ b/lib/god/diagnostics.rb @@ -7,4 +7,31 @@ def start_dike sleep(1) end end +end + +class BleakHouseDiagnostic + LOG_FILE = File.join(File.dirname(__FILE__), *%w[.. .. logs bleak.log]) + + class << self + attr_accessor :logger + end + + def self.install + require 'bleak_house' + self.logger = BleakHouse::Logger.new + File.delete(LOG_FILE) rescue nil + end + + def self.snapshot + self.logger.snapshot(LOG_FILE, "timer", false) if self.logger + end + + def self.spin(delay = 1) + Thread.new do + loop do + self.snapshot + sleep(delay) + end + end + end end \ No newline at end of file diff --git a/lib/god/event_handler.rb b/lib/god/event_handler.rb index 8a402fa..c1ea847 100644 --- a/lib/god/event_handler.rb +++ b/lib/god/event_handler.rb @@ -61,7 +61,13 @@ module God def self.start Thread.new do loop do - @@handler.handle_events + begin + @@handler.handle_events + rescue Exception => e + message = format("Unhandled exception (%s): %s\n%s", + e.class, e.message, e.backtrace.join("\n")) + applog(nil, :fatal, message) + end end end end diff --git a/lib/god/timer.rb b/lib/god/timer.rb index 46a38fe..51d8e69 100644 --- a/lib/god/timer.rb +++ b/lib/god/timer.rb @@ -89,7 +89,9 @@ module God applog(nil, :fatal, message) ensure # sleep until next check - GC.start + # GC.start + # BleakHouseDiagnostic.snapshot + # p BleakHouseDiagnostic.logger.mem_usage sleep INTERVAL end end -- 2.11.4.GIT