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����������������������������... Download