[Groonga-commit] droonga/droonga-engine at 936acaa [master] Start and shutdown Forwarder under EngineNode correctly

Back to archive index

YUKI Hiroshi null+****@clear*****
Tue Jan 6 18:55:31 JST 2015


YUKI Hiroshi	2015-01-06 18:55:31 +0900 (Tue, 06 Jan 2015)

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

  Message:
    Start and shutdown Forwarder under EngineNode correctly
    
    Conflicts:
    	lib/droonga/engine_node.rb

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

  Modified: lib/droonga/cluster.rb (+22 -6)
===================================================================
--- lib/droonga/cluster.rb    2015-01-06 18:35:16 +0900 (9a4dd35)
+++ lib/droonga/cluster.rb    2015-01-06 18:55:31 +0900 (c3b2a40)
@@ -33,20 +33,36 @@ module Droonga
       @state = nil
       @on_change = nil
 
-      @file_observer = FileObserver.new(loop, Path.cluster_state)
-      @file_observer.on_change = lambda do
-        reload
-      end
-
       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
     end
 
     def reload
@@ -85,7 +101,7 @@ module Droonga
       receiver_node_name = receiver.match(/\A[^:]+:\d+\/[^.]+/).to_s
       @engine_nodes.each do |node|
         if node.name == receiver_node_name
-          node.forwarder.forward(message, destination)
+          node.forward(message, destination)
           return true
         end
       end

  Modified: lib/droonga/engine.rb (+3 -1)
===================================================================
--- lib/droonga/engine.rb    2015-01-06 18:35:16 +0900 (06d4958)
+++ lib/droonga/engine.rb    2015-01-06 18:55:31 +0900 (7bd284b)
@@ -52,7 +52,7 @@ module Droonga
         @on_ready.call if @on_ready
       end
       @state.start
-      @cluster.start_observe
+      @cluster.start
       @node_metadata_observer.start
       @dispatcher.start
       logger.trace("start: done")
@@ -66,6 +66,7 @@ module Droonga
         logger.trace("stop_gracefully/on_finish: start")
         save_last_processed_message_timestamp
         @dispatcher.stop_gracefully do
+          @cluster.shutdown
           @state.shutdown
           yield
         end
@@ -88,6 +89,7 @@ module Droonga
       @cluster.stop_observe
       @node_metadata_observer.stop
       @dispatcher.stop_immediately
+      @cluster.shutdown
       @state.shutdown
       logger.trace("stop_immediately: done")
     end

  Modified: lib/droonga/engine_node.rb (+16 -0)
===================================================================
--- lib/droonga/engine_node.rb    2015-01-06 18:35:16 +0900 (d7877b2)
+++ lib/droonga/engine_node.rb    2015-01-06 18:55:31 +0900 (9e73b27)
@@ -28,6 +28,22 @@ module Droonga
       @forwarder = Forwarder.new(loop, :buffering => true)
     end
 
+    def start
+      logger.trace("start: start")
+      @forwarder.start
+      logger.trace("start: done")
+    end
+
+    def shutdown
+      logger.trace("shutdown: start")
+      @forwarder.shutdown
+      logger.trace("shutdown: done")
+    end
+
+    def forward(message, destination)
+      @forwarder.forward(message, destination)
+    end
+
     def live?
       @state.nil? or @state["live"]
     end
-------------- next part --------------
HTML����������������������������...
下载 



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