Issue #372 has been updated by Makoto K…
- Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest)
[/home/mame/work/ruby19/ruby/test/rinda/test_rinda.rb:397]:
<[0, 3]> expected but was
<[1, 2]>.
非常にごくまれに(1回も再現できていません)trunk でもこれが起きることがあるようです。
- Failure:
test_core_03_notify(Rinda::TupleSpaceTest)
[/export/home/ksmakoto/ruby-working/ruby194/ruby-git/test/rinda/test_rinda.rb:398]:
<[0, 3]> expected but was
<[1, 2]>.
という 1F を確認しました。
FreeBSD 8.2-STABLE で r32672 です。
Bug #372: Rinda has a race condition
Author: Anonymous
Status: Rejected
Priority: Low
Assignee:
Category:
Target version:
=begin
咳といいます。
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
endsleep 3 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
=end