Bug #372
closedRinda has a race condition
Description
=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
Updated by mame (Yusuke Endoh) over 16 years ago
=begin
遠藤です。
2008/07/26 4:15 Masatoshi SEKI m_seki@mva.biglobe.ne.jp:
1.8系のtuplespace.rbを修正した覚えがあるのですが、
1.8系でもやっぱりだめでしょうか?
すみません、1.8.5 とかすごく古い 1.8 を見ていました。
どちらにせよ、1.8のtuplespace.rbを1.9へciしようと思いますので、
よかったらあとでもう一度ためしてもらえますか?
#いまビルド中なのでしばらく待ってください
確認しました。
make test-all TESTS=rinda では 0F0E でしたが、make test-all だと
2 つ Failure が出ました。
-
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]>. -
Failure:
test_has_expires_eh(TestTupleBag)
[/home/mame/work/ruby19/ruby/test/rinda/test_tuplebag.rb:137]:
expected but was
.
また、この start_keeper だと keeper が死なないと思うのですが、
それはちょっとまずくないでしょうか。
$ ./ruby -e '
at_exit { sleep 5; p Thread.list }
require "test/rinda/test_rinda.rb"
'
Loaded suite -e
Started
.........................
Finished in 1.050015839 seconds.
25 tests, 292 assertions, 0 failures, 0 errors
[#<Thread:0x819f2f0 run>, #<Thread:0x838f1a0 sleep>,
#<Thread:0x8389dcc sleep>, #<Thread:0x83a2db8 sleep>,
#<Thread:0x839d520 sleep>, #<Thread:0x83919a0 sleep>,
#<Thread:0x832dd9c sleep>, #<Thread:0x826e67c sleep>,
#<Thread:0x83888f0 sleep>, #<Thread:0x825ebb4 sleep>,
#<Thread:0x825ccd8 sleep>, #<Thread:0x849d038 sleep>,
#<Thread:0x82f3214 sleep>, #<Thread:0x8311ac0 sleep>,
#<Thread:0x845f328 sleep>, #<Thread:0x84be5bc sleep>,
#<Thread:0x847b938 sleep>, #<Thread:0x84265a0 sleep>,
#<Thread:0x824f7b8 sleep>, #<Thread:0x828cf00 sleep>]
--
Yusuke ENDOH mame@tsg.ne.jp
=end
Updated by mame (Yusuke Endoh) over 16 years ago
=begin
遠藤です。
2008/07/26 4:15 Masatoshi SEKI m_seki@mva.biglobe.ne.jp:
1.8系のtuplespace.rbを修正した覚えがあるのですが、
1.8系でもやっぱりだめでしょうか?
すみません、1.8.5 とかすごく古い 1.8 を見ていました。
どちらにせよ、1.8のtuplespace.rbを1.9へciしようと思いますので、
よかったらあとでもう一度ためしてもらえますか?
#いまビルド中なのでしばらく待ってください
確認しました。
make test-all TESTS=rinda では 0F0E でしたが、make test-all だと
2 つ Failure が出ました。
-
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]>. -
Failure:
test_has_expires_eh(TestTupleBag)
[/home/mame/work/ruby19/ruby/test/rinda/test_tuplebag.rb:137]:
expected but was
.
また、この start_keeper だと keeper が死なないと思うのですが、
それはちょっとまずくないでしょうか。
$ ./ruby -e '
at_exit { sleep 5; p Thread.list }
require "test/rinda/test_rinda.rb"
'
Loaded suite -e
Started
.........................
Finished in 1.050015839 seconds.
25 tests, 292 assertions, 0 failures, 0 errors
[#<Thread:0x819f2f0 run>, #<Thread:0x838f1a0 sleep>,
#<Thread:0x8389dcc sleep>, #<Thread:0x83a2db8 sleep>,
#<Thread:0x839d520 sleep>, #<Thread:0x83919a0 sleep>,
#<Thread:0x832dd9c sleep>, #<Thread:0x826e67c sleep>,
#<Thread:0x83888f0 sleep>, #<Thread:0x825ebb4 sleep>,
#<Thread:0x825ccd8 sleep>, #<Thread:0x849d038 sleep>,
#<Thread:0x82f3214 sleep>, #<Thread:0x8311ac0 sleep>,
#<Thread:0x845f328 sleep>, #<Thread:0x84be5bc sleep>,
#<Thread:0x847b938 sleep>, #<Thread:0x84265a0 sleep>,
#<Thread:0x824f7b8 sleep>, #<Thread:0x828cf00 sleep>]
--
Yusuke ENDOH mame@tsg.ne.jp
=end
Updated by mame (Yusuke Endoh) over 16 years ago
=begin
遠藤です。
2008/07/26 4:15 Masatoshi SEKI m_seki@mva.biglobe.ne.jp:
1.8系のtuplespace.rbを修正した覚えがあるのですが、
1.8系でもやっぱりだめでしょうか?
すみません、1.8.5 とかすごく古い 1.8 を見ていました。
どちらにせよ、1.8のtuplespace.rbを1.9へciしようと思いますので、
よかったらあとでもう一度ためしてもらえますか?
#いまビルド中なのでしばらく待ってください
確認しました。
make test-all TESTS=rinda では 0F0E でしたが、make test-all だと
2 つ Failure が出ました。
-
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]>. -
Failure:
test_has_expires_eh(TestTupleBag)
[/home/mame/work/ruby19/ruby/test/rinda/test_tuplebag.rb:137]:
expected but was
.
また、この start_keeper だと keeper が死なないと思うのですが、
それはちょっとまずくないでしょうか。
$ ./ruby -e '
at_exit { sleep 5; p Thread.list }
require "test/rinda/test_rinda.rb"
'
Loaded suite -e
Started
.........................
Finished in 1.050015839 seconds.
25 tests, 292 assertions, 0 failures, 0 errors
[#<Thread:0x819f2f0 run>, #<Thread:0x838f1a0 sleep>,
#<Thread:0x8389dcc sleep>, #<Thread:0x83a2db8 sleep>,
#<Thread:0x839d520 sleep>, #<Thread:0x83919a0 sleep>,
#<Thread:0x832dd9c sleep>, #<Thread:0x826e67c sleep>,
#<Thread:0x83888f0 sleep>, #<Thread:0x825ebb4 sleep>,
#<Thread:0x825ccd8 sleep>, #<Thread:0x849d038 sleep>,
#<Thread:0x82f3214 sleep>, #<Thread:0x8311ac0 sleep>,
#<Thread:0x845f328 sleep>, #<Thread:0x84be5bc sleep>,
#<Thread:0x847b938 sleep>, #<Thread:0x84265a0 sleep>,
#<Thread:0x824f7b8 sleep>, #<Thread:0x828cf00 sleep>]
--
Yusuke ENDOH mame@tsg.ne.jp
=end
Updated by metanest (Makoto Kishimoto) over 13 years ago
- 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 です。
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
- Category set to ext
- Status changed from Rejected to Assigned
- Assignee set to seki (Masatoshi Seki)
- Target version set to 2.0.0
- ruby -v set to -
redmineにうまく転写されてないようですが、テストの問題とのことなので、
reopenのうえ咳さんにアサインします。
Updated by seki (Masatoshi Seki) over 13 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
Updated by metanest (Makoto Kishimoto) about 13 years ago
きしもとです
Rinda::TupleSpaceProxyTest#test_core_03_notifyが、まだ、たまにfailに
なります。
- Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest) [/export/home/ksmakoto/ruby-working/rub
y194/ruby-git/test/rinda/test_rinda.rb:372]:
<["delete", {"message"=>"second", "name"=>"1"}]> expected but was
<["close"]>.
手元の trunk(r33066)で、
make test-all TESTS='-vn test_core_03_notify rinda/test_rinda.rb'
を10万回実行してみたところ、1384回failになり、
Rinda::TupleSpaceProxyTest#test_core_03_notify で 8回、
Rinda::TupleSpaceTest#test_core_03_notify で 11回、
刺さって(?)止まったので kill しました。
Updated by Anonymous about 13 years ago
咳といいます。
On 2011/08/27, at 13:41, KISHIMOTO, Makoto wrote:
きしもとです
Rinda::TupleSpaceProxyTest#test_core_03_notifyが、まだ、たまにfailに
なります。
- Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest) [/export/home/ksmakoto/ruby-working/rub
y194/ruby-git/test/rinda/test_rinda.rb:372]:
<["delete", {"message"
Updated by Anonymous about 13 years ago
(2011/08/27 14:58), Masatoshi SEKI wrote:
咳といいます。
On 2011/08/27, at 13:41, KISHIMOTO, Makoto wrote:
きしもとです
Rinda::TupleSpaceProxyTest#test_core_03_notifyが、まだ、たまにfailに
なります。
- Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest) [/export/home/ksmakoto/ruby-working/rub
y194/ruby-git/test/rinda/test_rinda.rb:372]:
<["delete", {"message"=>"second", "name"=>"1"}]> expected but was
<["close"]>.手元の trunk(r33066)で、
make test-all TESTS='-vn test_core_03_notify rinda/test_rinda.rb'
を10万回実行してみたところ、1384回failになり、
Rinda::TupleSpaceProxyTest#test_core_03_notify で 8回、
Rinda::TupleSpaceTest#test_core_03_notify で 11回、
刺さって(?)止まったので kill しました。そうですか...。
このテスト、もう削除したいけど、がんばんないとだめ?
咳さんがメンテされているので、咳さんの意思優先でいいと思うのですが、
参考までに理由を教えて貰えませんか。自分は無罪っぽいけど追い切れない、
とかなら、手伝うとかいう選択肢もあるのかもしれませんし。。。
刺さってるのは放置してていいのかな。というのが若干気になります
Updated by Anonymous about 13 years ago
On 2011/08/27, at 15:16, KOSAKI Motohiro wrote:
(2011/08/27 14:58), Masatoshi SEKI wrote:
咳といいます。
On 2011/08/27, at 13:41, KISHIMOTO, Makoto wrote:
きしもとです
Rinda::TupleSpaceProxyTest#test_core_03_notifyが、まだ、たまにfailに
なります。
- Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest) [/export/home/ksmakoto/ruby-working/rub
y194/ruby-git/test/rinda/test_rinda.rb:372]:
<["delete", {"message"