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