[Groonga-commit] droonga/droonga-engine at e34a2ec [master] Reload cluster state information when other nodes are changed

Back to archive index

YUKI Hiroshi null+****@clear*****
Wed Mar 25 15:53:35 JST 2015


YUKI Hiroshi	2015-03-25 15:53:35 +0900 (Wed, 25 Mar 2015)

  New Revision: e34a2ece0efc8e705693cf1ad18737a7757963c4
  https://github.com/droonga/droonga-engine/commit/e34a2ece0efc8e705693cf1ad18737a7757963c4

  Message:
    Reload cluster state information when other nodes are changed

  Modified files:
    lib/droonga/cluster.rb
    lib/droonga/engine.rb

  Modified: lib/droonga/cluster.rb (+18 -0)
===================================================================
--- lib/droonga/cluster.rb    2015-03-25 15:36:05 +0900 (c62c85e)
+++ lib/droonga/cluster.rb    2015-03-25 15:53:35 +0900 (275f0b7)
@@ -16,6 +16,7 @@
 require "droonga/loggable"
 require "droonga/changable"
 require "droonga/path"
+require "droonga/file_observer"
 require "droonga/engine_node"
 require "droonga/node_metadata"
 
@@ -60,13 +61,30 @@ module Droonga
       reload
     end
 
+    def start_observe
+      return if @file_observer
+      @file_observer = FileObserver.new(@loop, Path.cluster_state)
+      @file_observer.on_change = lambda do
+        reload
+      end
+      @file_observer.start
+    end
+
+    def stop_observe
+      return unless @file_observer
+      @file_observer.stop
+      @file_observer = nil
+    end
+
     def start
       engine_nodes.each do |node|
         node.start
       end
+      start_observe
     end
 
     def shutdown
+      stop_observe
       engine_nodes.each do |node|
         node.shutdown
       end

  Modified: lib/droonga/engine.rb (+2 -0)
===================================================================
--- lib/droonga/engine.rb    2015-03-25 15:36:05 +0900 (858efc3)
+++ lib/droonga/engine.rb    2015-03-25 15:53:35 +0900 (9576219)
@@ -62,6 +62,7 @@ module Droonga
 
     def stop_gracefully
       logger.trace("stop_gracefully: start")
+      @cluster.stop_observe
       on_finish = lambda do
         logger.trace("stop_gracefully/on_finish: start")
         save_last_processed_message_timestamp
@@ -86,6 +87,7 @@ module Droonga
     def stop_immediately
       logger.trace("stop_immediately: start")
       save_last_processed_message_timestamp
+      @cluster.stop_observe
       @dispatcher.stop_immediately
       @cluster.shutdown
       @state.shutdown
-------------- next part --------------
HTML����������������������������...
下载 



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