Kouhei Sutou
kou****@clear*****
Fri Apr 10 11:09:13 JST 2015
> + serf.current_members.select do |member| > + member["name"] == target > + end.first selectしてfirstするならfindでいいですよ。 In <235aae4bfe285b68f6dc6db20e083bc8d41478c3 �� jenkins.clear-code.com> "[Groonga-commit] droonga/droonga-engine �� 235aae4 [master] Don't save "absorbing" tag as a part of cluster state to suppress restarting" on Thu, 09 Apr 2015 10:16:29 +0900, YUKI Hiroshi <null+groonga �� clear-code.com> wrote: > YUKI Hiroshi 2015-04-09 10:16:29 +0900 (Thu, 09 Apr 2015) > > New Revision: 235aae4bfe285b68f6dc6db20e083bc8d41478c3 > https://github.com/droonga/droonga-engine/commit/235aae4bfe285b68f6dc6db20e083bc8d41478c3 > > Message: > Don't save "absorbing" tag as a part of cluster state to suppress restarting > > Modified files: > bin/droonga-engine-absorb-data > bin/droonga-engine-join > lib/droonga/serf.rb > > Modified: bin/droonga-engine-absorb-data (+6 -5) > =================================================================== > --- bin/droonga-engine-absorb-data 2015-04-08 21:12:33 +0900 (98ae9b1) > +++ bin/droonga-engine-absorb-data 2015-04-09 10:16:29 +0900 (5418c31) > @@ -136,9 +136,11 @@ class AbsorbDataCommand > serf.send_query(command, options) > end > > - def current_cluster_state(target) > + def current_member_state(target) > serf = Droonga::Serf.new(target, :verbose => @options.verbose) > - serf.current_cluster_state(:node => target) > + serf.current_members.select do |member| > + member["name"] == target > + end.first > end > > def absorber > @@ -170,9 +172,8 @@ class AbsorbDataCommand > last_progress = "" > while true > sleep(3) > - state = current_cluster_state(source_node) > - if state[destination_node].nil? or > - not state[destination_node]["absorbing"] > + state = current_member_state(destination_node) > + if state.nil? or state["tags"]["absorbing"] != "true" > break > end > > > Modified: bin/droonga-engine-join (+6 -5) > =================================================================== > --- bin/droonga-engine-join 2015-04-08 21:12:33 +0900 (eb69a67) > +++ bin/droonga-engine-join 2015-04-09 10:16:29 +0900 (85d8e7e) > @@ -141,9 +141,11 @@ class JoinCommand > serf.send_query(command, options) > end > > - def current_cluster_state(target) > + def current_member_state(target) > serf = Droonga::Serf.new(target, :verbose => @options[:verbose]) > - serf.current_cluster_state(:node => target) > + serf.current_members.select do |member| > + member["name"] == target > + end.first > end > > def absorber > @@ -229,9 +231,8 @@ class JoinCommand > last_progress = "" > while true > sleep(3) > - state = current_cluster_state(source_node) > - if state[joining_node].nil? or > - not state[joining_node]["absorbing"] > + state = current_member_state(joining_node) > + if state.nil? or state["tags"]["absorbing"] != "true" > break > end > progress = absorber.report_progress(@start_time_in_seconds) > > Modified: lib/droonga/serf.rb (+6 -14) > =================================================================== > --- lib/droonga/serf.rb 2015-04-08 21:12:33 +0900 (b183b9b) > +++ lib/droonga/serf.rb 2015-04-09 10:16:29 +0900 (1117dcf) > @@ -111,24 +111,17 @@ module Droonga > end > end > > - def current_cluster_state(options={}) > + def current_members > raw_response = run_command("members", "-format", "json") > response = JSON.parse(raw_response) > + response["members"] > + end > > - current_cluster_id = nil > - if options[:node] > - response["members"].each do |member| > - next if member["name"] != options[:node] > - current_cluster_id = member["tags"]["cluster_id"] > - break > - end > - else > - current_cluster_id = cluster_id > - end > - > + def current_cluster_state > + current_cluster_id = cluster_id > nodes = {} > unprocessed_messages_existence = {} > - response["members"].each do |member| > + current_members.each do |member| > foreign = member["tags"]["cluster_id"] != current_cluster_id > next if foreign > > @@ -144,7 +137,6 @@ module Droonga > "role" => member["tags"]["role"], > "accept_messages_newer_than" => member["tags"]["accept-messages-newer-than"], > "live" => member["status"] == "alive", > - "absorbing" => member["tags"]["absorbing"] == "true", > } > end > unprocessed_messages_existence.each do |node_name, have_messages|