YUKI Hiroshi
null+****@clear*****
Thu Dec 18 16:07:42 JST 2014
YUKI Hiroshi 2014-12-18 16:07:42 +0900 (Thu, 18 Dec 2014) New Revision: 2f4e8deac798971398f5a53b4fa674adc4a710b1 https://github.com/droonga/droonga-engine/commit/2f4e8deac798971398f5a53b4fa674adc4a710b1 Merged 69350ee: Merge branch 'master' into buffered-forward Message: Forward read messages only for live and same role nodes Modified files: lib/droonga/dispatcher.rb lib/droonga/engine_state.rb lib/droonga/plugins/system.rb test/unit/plugins/system/test_status.rb Modified: lib/droonga/dispatcher.rb (+1 -1) =================================================================== --- lib/droonga/dispatcher.rb 2014-12-18 15:51:46 +0900 (9990e80) +++ lib/droonga/dispatcher.rb 2014-12-18 16:07:42 +0900 (054ec5c) @@ -195,7 +195,7 @@ module Droonga if write_step?(step) target_nodes = @engine_state.writable_nodes else - target_nodes = @engine_state.responsive_nodes + target_nodes = @engine_state.forwardable_nodes end routes = dataset.compute_routes(step, target_nodes) step["routes"] = routes Modified: lib/droonga/engine_state.rb (+33 -5) =================================================================== --- lib/droonga/engine_state.rb 2014-12-18 15:51:46 +0900 (e3d2583) +++ lib/droonga/engine_state.rb 2014-12-18 16:07:42 +0900 (418a5b5) @@ -21,6 +21,7 @@ require "droonga/loggable" require "droonga/event_loop" require "droonga/forwarder" require "droonga/replier" +require "droonga/node_status" module Droonga class EngineState @@ -124,12 +125,35 @@ module Droonga end end - def responsive_service_provider_nodes - (all_nodes & service_provider_nodes) - dead_nodes + def absorb_source_nodes + if @live_nodes_list + @live_nodes_list.absorb_source_nodes + else + all_nodes + end + end + + def absorb_destination_nodes + if @live_nodes_list + @live_nodes_list.absorb_destination_nodes + else + all_nodes + end + end + + def same_role_nodes + case node_status(:role) + when NodeStatus::Role::ABSORB_SOURCE + all_nodes & absorb_source_nodes + when NodeStatus::Role::ABSORB_DESTINATION + all_nodes & absorb_destination_nodes + else + all_nodes & service_provider_nodes + end end - def responsive_nodes - responsive_service_provider_nodes + def forwardable_nodes + same_role_nodes - dead_nodes end def writable_nodes @@ -146,7 +170,7 @@ module Droonga end def select_responsive_routes(routes) - selected_nodes = responsive_service_provider_nodes + selected_nodes = forwardable_nodes routes.select do |route| selected_nodes.include?(farm_path(route)) end @@ -157,6 +181,10 @@ module Droonga end private + def node_status + @node_status ||= NodeStatus.new + end + def log_tag "engine_state" end Modified: lib/droonga/plugins/system.rb (+1 -1) =================================================================== --- lib/droonga/plugins/system.rb 2014-12-18 15:51:46 +0900 (af1ee22) +++ lib/droonga/plugins/system.rb 2014-12-18 16:07:42 +0900 (7e0f723) @@ -26,7 +26,7 @@ module Droonga def handle(message) engine_state =****@messe*****_state - active_nodes = engine_state.responsive_service_provider_nodes + active_nodes = engine_state.forwardable_nodes dead_nodes = engine_state.dead_nodes nodes = {} engine_state.all_nodes.collect do |identifier| Modified: test/unit/plugins/system/test_status.rb (+1 -1) =================================================================== --- test/unit/plugins/system/test_status.rb 2014-12-18 15:51:46 +0900 (a4bd1ea) +++ test/unit/plugins/system/test_status.rb 2014-12-18 16:07:42 +0900 (e33865b) @@ -54,7 +54,7 @@ class SystemStatusHandlerTest < Test::Unit::TestCase ] end - def responsive_service_provider_nodes + def forwardable_nodes [ "127.0.0.1:10031/droonga", ] -------------- next part -------------- HTML����������������������������...Download