YUKI Hiroshi
null+****@clear*****
Thu Dec 11 18:34:42 JST 2014
YUKI Hiroshi 2014-12-11 18:34:42 +0900 (Thu, 11 Dec 2014) New Revision: a2ba84c49f4c9bd7db43ee573da072c63bef6f74 https://github.com/droonga/droonga-engine/commit/a2ba84c49f4c9bd7db43ee573da072c63bef6f74 Merged 97ba0d9: Merge ../droonga-engine into replicas-in-a-branch Message: Store information about nodes in foreign cluster Modified files: lib/droonga/engine_state.rb lib/droonga/live_nodes_list.rb lib/droonga/serf.rb Modified: lib/droonga/engine_state.rb (+1 -1) =================================================================== --- lib/droonga/engine_state.rb 2014-12-11 18:33:12 +0900 (aa2f7f8) +++ lib/droonga/engine_state.rb 2014-12-11 18:34:42 +0900 (5b2287d) @@ -123,7 +123,7 @@ module Droonga # * responses : undetermined def live_nodes if @live_nodes_list - @live_nodes_list.all_nodes + @live_nodes_list.live_nodes else all_nodes end Modified: lib/droonga/live_nodes_list.rb (+16 -1) =================================================================== --- lib/droonga/live_nodes_list.rb 2014-12-11 18:33:12 +0900 (cf4ab3a) +++ lib/droonga/live_nodes_list.rb 2014-12-11 18:34:42 +0900 (c3ec720) @@ -23,15 +23,30 @@ module Droonga @nodes.keys end + def live_nodes + @live_nodes ||= collect_live_nodes + end + def suspended_nodes @suspended_nodes ||= collect_suspended_nodes end private + def collect_live_nodes + nodes = [] + @nodes.each do |name, state| + if not state["foreign"] and state["live"] + nodes << name + end + end + nodes + end + def collect_suspended_nodes nodes = [] @nodes.each do |name, state| - if state["tags"]["suspended"] == "true" + if not state["foreign"] and + state["tags"]["suspended"] == "true" nodes << name end end Modified: lib/droonga/serf.rb (+7 -7) =================================================================== --- lib/droonga/serf.rb 2014-12-11 18:33:12 +0900 (e014c4b) +++ lib/droonga/serf.rb 2014-12-11 18:34:42 +0900 (6220c38) @@ -133,13 +133,13 @@ module Droonga members = result[:result] current_cluster_id = cluster_id members["members"].each do |member| - if member["status"] == "alive" and - member["tags"]["cluster_id"] == current_cluster_id - nodes_list[member["name"]] = { - "serfAddress" => member["addr"], - "tags" => member["tags"], - } - end + foreign = member["tags"]["cluster_id"] != current_cluster_id + nodes_list[member["name"]] = { + "live" => member["status"] == "alive", + "foreign" => foreign, + "serfAddress" => member["addr"], + "tags" => member["tags"], + } end nodes_list end -------------- next part -------------- HTML����������������������������...Télécharger