[Groonga-commit] droonga/droonga-engine at 690c82d [master] Calculate list of dead nodes by LiveNodesList

Back to archive index

Kouhei Sutou kou****@clear*****
Fri Dec 12 10:20:02 JST 2014


> +    def ==(nodes_list)
> +      nodes_list.all_nodes == all_nodes and
> +        nodes_list.dead_nodes == dead_nodes and
> +        nodes_list.suspended_nodes == suspended_nodes
> +    end

==を実装するときは最初に

  nodes_list.is_a?(self.class)

を入れるのが定石です!そうしないとobject == nilとかしたとき
に例外が発生します。(==は右辺がどんなオブジェクトでも例外を
発生させるんじゃなくてtrue/falseを返して欲しいですよね。)

In <690c82dbc6bbb3dbc821bb8ffc7e37eb645cb3d4 �� jenkins.clear-code.com>
  "[Groonga-commit] droonga/droonga-engine �� 690c82d [master] Calculate list of dead nodes by LiveNodesList" on Thu, 11 Dec 2014 18:53:05 +0900,
  YUKI Hiroshi <null+groonga �� clear-code.com> wrote:

> YUKI Hiroshi	2014-12-11 18:53:05 +0900 (Thu, 11 Dec 2014)
> 
>   New Revision: 690c82dbc6bbb3dbc821bb8ffc7e37eb645cb3d4
>   https://github.com/droonga/droonga-engine/commit/690c82dbc6bbb3dbc821bb8ffc7e37eb645cb3d4
> 
>   Message:
>     Calculate list of dead nodes by LiveNodesList
> 
>   Modified files:
>     lib/droonga/engine_state.rb
>     lib/droonga/live_nodes_list.rb
> 
>   Modified: lib/droonga/engine_state.rb (+4 -6)
> ===================================================================
> --- lib/droonga/engine_state.rb    2014-12-11 18:43:59 +0900 (9bffd23)
> +++ lib/droonga/engine_state.rb    2014-12-11 18:53:05 +0900 (9dd2857)
> @@ -46,7 +46,6 @@ module Droonga
>        @on_finish = nil
>        @catalog = nil
>        @live_nodes_list = nil
> -      @dead_nodes = []
>      end
>  
>      def start
> @@ -146,11 +145,10 @@ module Droonga
>        end
>      end
>  
> -    def live_nodes_list=(nodes_list)
> +    def live_nodes_list=(new_nodes_list)
>        old_live_nodes_list = @live_nodes_list
> -      @live_nodes_list = nodes_list
> -      @dead_nodes = all_nodes - @live_nodes_list.live_nodes
> -      if old_live_nodes_list != @live_nodes_list.live_nodes
> +      @live_nodes_list = new_nodes_list
> +      unless old_live_nodes_list == new_nodes_list
>          @forwarder.resume
>        end
>        @live_nodes_list
> @@ -158,7 +156,7 @@ module Droonga
>  
>      def remove_dead_routes(routes)
>        routes.reject do |route|
> -        @dead_nodes.include?(farm_path(route))
> +        dead_nodes.include?(farm_path(route))
>        end
>      end
>  
> 
>   Modified: lib/droonga/live_nodes_list.rb (+9 -3)
> ===================================================================
> --- lib/droonga/live_nodes_list.rb    2014-12-11 18:43:59 +0900 (cb05762)
> +++ lib/droonga/live_nodes_list.rb    2014-12-11 18:53:05 +0900 (90112e2)
> @@ -20,7 +20,7 @@ module Droonga
>      end
>  
>      def all_nodes
> -      @nodes.keys
> +      @all_nodes ||=****@nodes*****
>      end
>  
>      def dead_nodes
> @@ -31,6 +31,12 @@ module Droonga
>        @suspended_nodes ||= collect_suspended_nodes
>      end
>  
> +    def ==(nodes_list)
> +      nodes_list.all_nodes == all_nodes and
> +        nodes_list.dead_nodes == dead_nodes and
> +        nodes_list.suspended_nodes == suspended_nodes
> +    end
> +
>      private
>      def collect_dead_nodes
>        nodes = []
> @@ -39,7 +45,7 @@ module Droonga
>            nodes << name
>          end
>        end
> -      nodes
> +      nodes.sort
>      end
>  
>      def collect_suspended_nodes
> @@ -50,7 +56,7 @@ module Droonga
>            nodes << name
>          end
>        end
> -      nodes
> +      nodes.sort
>      end
>    end
>  end




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