[Groonga-commit] droonga/droonga-engine at 2f4e8de [buffered-forward] Forward read messages only for live and same role nodes

Back to archive index

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 



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