[Groonga-commit] droonga/fluent-plugin-droonga at 28a648b [graceful-restart-on-catalog-update] Handle errors during catalog load

Back to archive index

Yoji Shidara null+****@clear*****
Thu Feb 13 17:45:01 JST 2014


Yoji Shidara	2014-02-13 17:45:01 +0900 (Thu, 13 Feb 2014)

  New Revision: 28a648ba5d1c3f6b045ae68e0bd5ca574554c4cb
  https://github.com/droonga/fluent-plugin-droonga/commit/28a648ba5d1c3f6b045ae68e0bd5ca574554c4cb

  Message:
    Handle errors during catalog load

  Modified files:
    lib/droonga/catalog_observer.rb

  Modified: lib/droonga/catalog_observer.rb (+13 -4)
===================================================================
--- lib/droonga/catalog_observer.rb    2014-02-13 17:30:31 +0900 (8d0d9f3)
+++ lib/droonga/catalog_observer.rb    2014-02-13 17:45:01 +0900 (2e9f0db)
@@ -34,7 +34,11 @@ module Droonga
       @loop = Cool.io::Loop.new
       attach(@loop)
       @thread = Thread.new do
-        @loop.run
+        begin
+          @loop.run
+        rescue => error
+          $log.error "error in catalog observing thread", :error => error
+        end
       end
     end
 
@@ -54,8 +58,12 @@ module Droonga
 
     def ensure_latest_catalog_loaded
       if catalog_updated?
-        load_catalog!
-        on_reload.call(catalog) if on_reload
+        begin
+          load_catalog!
+          on_reload.call(catalog) if on_reload
+        rescue Droonga::Error => error
+          $log.warn "failed to reload catalog", :path => @catalog_path, :error => error
+        end
       end
     end
 
@@ -71,8 +79,9 @@ module Droonga
     def load_catalog!
       loader = CatalogLoader.new(@catalog_path)
       @catalog = loader.load
-      @catalog_mtime = File.mtime(@catalog_path)
       $log.info "catalog loaded", path: @catalog_path, mtime: @catalog_mtime
+    ensure
+      @catalog_mtime = File.mtime(@catalog_path)
     end
   end
 end
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index