more diagnosticsmaster
authortom <tom@taco.desk.hq.powerset.com>
Sat, 12 Jan 2008 01:02:47 +0000 (11 17:02 -0800)
committertom <tom@taco.desk.hq.powerset.com>
Sat, 12 Jan 2008 01:02:47 +0000 (11 17:02 -0800)
lib/god.rb
lib/god/diagnostics.rb
lib/god/event_handler.rb
lib/god/timer.rb

index ed82193..6df92ee 100644 (file)
@@ -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
index c59112b..388a06b 100644 (file)
@@ -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
index 8a402fa..c1ea847 100644 (file)
@@ -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
index 46a38fe..51d8e69 100644 (file)
@@ -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