[#43284] [Ruby 1.9 - Bug #4456] [Open] Time#strftime で %F 指定子に大きな幅を指定した際の不具合 — tadayoshi funaba <redmine@...>
14 messages
2011/03/02
[#43285] [Ruby 1.9 - Bug #4457] [Open] Time#strftime で %z 指定子などに大きな幅を指定した際の不具合 — tadayoshi funaba <redmine@...>
6 messages
2011/03/02
[#43296] [Ruby 1.9 - Bug #3990] [Assigned]tests of rexml/rss reports many errors and failures without iconv — Yui NARUSE <redmine@...>
5 messages
2011/03/03
[#43297] Re: [Ruby 1.9 - Bug #3990] [Assigned]tests of rexml/rss reports many errors and failures without iconv
— SASADA Koichi <ko1@...>
2011/03/03
(2011/03/03 18:56), Yui NARUSE wrote:
[#43298] Re: [Ruby 1.9 - Bug #3990] [Assigned]tests of rexml/rss reports many errors and failures without iconv
— "U.Nakamura" <usa@...>
2011/03/03
こんにちは、なかむら(う)です。
[#43317] [Ruby 1.9 - Bug #4474][Open] 複数のスレッドからトランザクションに入ろうとした場合のPStoreの挙動 — Masaki Matsushita <redmine@...>
9 messages
2011/03/06
[#43346] [BUG] lib/irb/locale.rb — keiju@... (Keiju ISHITSUKA)
けいじゅ@いしつかです.
8 messages
2011/03/24
[#43347] Re: [BUG] lib/irb/locale.rb
— Yugui <yugui@...>
2011/03/24
2011/3/24 Keiju ISHITSUKA <keiju@ishitsuka.com>:
[#43355] [Ruby 1.9 - Feature #4529][Assigned] date_core と long 型 — Yui NARUSE <redmine@...>
10 messages
2011/03/25
[#43359] [Ruby 1.9 - Feature #4529][Rejected] date_core と long 型
— tadayoshi funaba <redmine@...>
2011/03/26
[#43360] Re: [ruby-dev:43359] [Ruby 1.9 - Feature #4529][Rejected] date_core と long 型
— "NARUSE, Yui" <naruse@...>
2011/03/26
(2011/03/26 19:21), tadayoshi funaba wrote:
[#43365] [Ruby 1.9 - Bug #4536][Open] 定数参照について1.8と1.9の違い — Yukihiro Matsumoto <matz@...>
11 messages
2011/03/29
[#43366] Re: [ruby-dev:43365] [Ruby 1.9 - Bug #4536][Open] 定数参照について1.8と1.9の違い
— SASADA Koichi <ko1@...>
2011/03/29
ささだです.
[ruby-dev:43337] [Ruby 1.9 - Bug #4474] 複数のスレッドからトランザクションに入ろうとした場合のPStoreの挙動
From:
Masaki Matsushita <redmine@...>
Date:
2011-03-10 11:25:37 UTC
List:
ruby-dev #43337
Issue #4474 has been updated by Masaki Matsushita.
File patch2.diff added
r31050にて#4のパッチが取り込まれましたが、
require 'pstore'
p = PStore.new("foo", true)
p.transaction { p.transaction { } }
上記のコードで例外nested transaction (PStore::Error)ではなく例外deadlock; recursive locking (ThreadError)が発生するというバグがありましたのでこれを修正するパッチを書きました。
つきましては、こちらのパッチも取り込んで頂けないでしょうか?
よろしくお願いします。
----------------------------------------
Bug #4474: 複数のスレッドからトランザクションに入ろうとした場合のPStoreの挙動
http://redmine.ruby-lang.org/issues/4474
Author: Masaki Matsushita
Status: Closed
Priority: Normal
Assignee:
Category: lib
Target version:
ruby -v: -
PStoreは、initializeの第2引数thread_safeが真であればデータベースの読み書きをMutexで同期するようになっています。
しかし、次のコード
require 'pstore'
require 'thread'
pstore = PStore.new("foo", true)
q = Queue.new
Thread.start do
pstore.transaction do
pstore[:hoge] = "fuga"
q.push(nil)
sleep
end
end
q.pop
pstore.transaction do
p pstore[:hoge]
end
を実行すると例外が発生します。
/usr/local/lib/ruby/1.9.1/pstore.rb:321:in `transaction': nested transaction (PStore::Error)
from pstore.rb:16:in `<main>'
以下のコードはpstore.rbの319行目以降から抜粋したものです。
319 def transaction(read_only = false, &block) # :yields: pstore
320 value = nil
321 raise PStore::Error, "nested transaction" if @transaction
322 @lock.synchronize do
(中略)
348 end
(中略)
352 end
Mutexで保護されたセクションに入る前に、別のトランザクションが実行されていないかどうか調べています。
あるスレッドがトランザクションを実行中に別のスレッドがトランザクションに入ろうとすると、ここで例外が発生します。
thread-safeの定義にも依りますが、これはバグではないでしょうか?
--
http://redmine.ruby-lang.org