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

Back to archive index

YUKI Hiroshi yuki****@clear*****
Fri Dec 12 10:24:45 JST 2014


ありがとうございます、勉強になります!

Kouhei Sutou wrote:
>> +    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
> 
> _______________________________________________
> Groonga-commit mailing list
> Groonga-commit �� lists.sourceforge.jp
> http://lists.sourceforge.jp/mailman/listinfo/groonga-commit
> 

-- 
結城 洋志 <YUKI Hiroshi>
E-mail: yuki �� clear-code.com

株式会社クリアコード
〒170-0005 東京都豊島区南大塚3-29-9
           中野ビル3階
TEL : 03-5927-9440
FAX : 03-5927-9441
WWW : http://www.clear-code.com/




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