[Groonga-commit] droonga/droonga-engine at 235aae4 [master] Don't save "absorbing" tag as a part of cluster state to suppress restarting

Back to archive index

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|




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