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/