From: Masatoshi SEKI Date: 2008-07-26T04:15:08+09:00 Subject: [ruby-dev:35659] Re: [Bug:1.9] Rinda has a race condition 咳といいます。 1.8系のtuplespace.rbを修正した覚えがあるのですが、 1.8系でもやっぱりだめでしょうか? どちらにせよ、1.8のtuplespace.rbを1.9へ ciしようと思いますので、 よかったらあとでもう一度ためしてもらえますか? #いまビルド中なのでしばらく待ってください On 2008/07/24, at 22:22, Yusuke ENDOH wrote: > > > 調べていて気づいたのですが、以下のように Rinda に遅延 > を発生させると > > > Index: lib/rinda/tuplespace.rb > =================================================================== > --- lib/rinda/tuplespace.rb (revision 18194) > +++ lib/rinda/tuplespace.rb (working copy) > @@ -570,6 +570,7 @@ > keep_clean > sleep(@period) > end > + sleep 3 > end > end > > > 以下で deadlock detected になります。1.8 でも同 > 様です。 似たようなところで遅延させたんですが、こんな感じです。 Index: lib/rinda/tuplespace.rb =================================================================== --- lib/rinda/tuplespace.rb (revision 18222) +++ lib/rinda/tuplespace.rb (working copy) @@ -622,6 +622,7 @@ break unless need_keeper? keep_clean end +sleep(3) end end end $ ./ruby -rrinda/tuplespace -e ' ts = Rinda::TupleSpace.new(1) ts.take([:foo, :bar], 1) rescue nil sleep 2 ts.take([:foo, :bar], 1) ' /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:503:in `move': Rinda::RequestExpiredError (Rinda::RequestExpiredError) from /usr/local/lib/ruby/1.8/monitor.rb:242:in `synchronize' from /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:488:in `move' from /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:479:in `take' from -e:5