Forum: Ruby-dev [Ruby 1.9 - Feature #4483][Open] PStoreをデフォルトで複数のスレッドから扱えるようにしたい

Posted by Masaki Matsushita (Guest)
on 2011-03-08 06:38
(Received via mailing list)
Issue #4483 has been reported by Masaki Matsushita.

----------------------------------------
Feature #4483: PStoreをデフォルトで複数のスレッドから扱えるようにしたい
http://redmine.ruby-lang.org/issues/4483

Author: Masaki Matsushita
Status: Open
Priority: Normal
Assignee:
Category: lib
Target version:


PStoreは、デフォルトでは他のスレッドがトランザクションを実行中にトランザクションに入ろうとすると例外nested 
transactionを発生させます。

initialize時に第2引数が真であれば、別のスレッドがトランザクションから抜けるまで待つようになりますが、
PStoreの用途から考えると、わざわざ引数にそのような指定をしなくても例外を投げずに待ってくれた方が嬉しいと思うのですが、いかがでしょうか。

PStore.newの第2引数を削除し、別のスレッドがトランザクションを実行中でもデフォルトで例外を投げずに待つようにしたpstore.rbと、
それに合わせて改変したtest_pstore.rbのパッチを添付します。
Posted by Shota Fukumori (Guest)
on 2011-03-08 06:48
(Received via mailing list)
Issue #4483 has been updated by Shota Fukumori.


互換性の面が懸念されます。

たとえばnested transaction例外を想定しているコード (たとえばtest_thread_safeとか) はどうなるのでしょう。
----------------------------------------
Feature #4483: PStoreをデフォルトで複数のスレッドから扱えるようにしたい
http://redmine.ruby-lang.org/issues/4483

Author: Masaki Matsushita
Status: Open
Priority: Normal
Assignee:
Category: lib
Target version:


PStoreは、デフォルトでは他のスレッドがトランザクションを実行中にトランザクションに入ろうとすると例外nested 
transactionを発生させます。

initialize時に第2引数が真であれば、別のスレッドがトランザクションから抜けるまで待つようになりますが、
PStoreの用途から考えると、わざわざ引数にそのような指定をしなくても例外を投げずに待ってくれた方が嬉しいと思うのですが、いかがでしょうか。

PStore.newの第2引数を削除し、別のスレッドがトランザクションを実行中でもデフォルトで例外を投げずに待つようにしたpstore.rbと、
それに合わせて改変したtest_pstore.rbのパッチを添付します。
Posted by Shyouhei Urabe (Guest)
on 2011-03-08 06:59
(Received via mailing list)
Issue #4483 has been updated by Shyouhei Urabe.


デフォルトがブロックするかしないかどっち向きに倒れておくべきかには議論のある所だとは思いますが、いきなり第二引数をなくしてしまうというのはやりすぎではないでしょうか。あなたの嬉しさは他者を排斥する理由としては弱いです。
----------------------------------------
Feature #4483: PStoreをデフォルトで複数のスレッドから扱えるようにしたい
http://redmine.ruby-lang.org/issues/4483

Author: Masaki Matsushita
Status: Open
Priority: Normal
Assignee:
Category: lib
Target version:


PStoreは、デフォルトでは他のスレッドがトランザクションを実行中にトランザクションに入ろうとすると例外nested 
transactionを発生させます。

initialize時に第2引数が真であれば、別のスレッドがトランザクションから抜けるまで待つようになりますが、
PStoreの用途から考えると、わざわざ引数にそのような指定をしなくても例外を投げずに待ってくれた方が嬉しいと思うのですが、いかがでしょうか。

PStore.newの第2引数を削除し、別のスレッドがトランザクションを実行中でもデフォルトで例外を投げずに待つようにしたpstore.rbと、
それに合わせて改変したtest_pstore.rbのパッチを添付します。
Posted by Shota Fukumori (Guest)
on 2011-03-08 07:23
(Received via mailing list)
Issue #4483 has been updated by Shota Fukumori.


Shyouhei Urabe wrote:
> 
デフォルトがブロックするかしないかどっち向きに倒れておくべきかには議論のある所だとは思いますが、いきなり第二引数をなくしてしまうというのはやりすぎではないでしょうか。あなたの嬉しさは他者を排斥する理由としては弱いです。

あまりパッチみてませんけどそれもありましたね。同意します。

せめてthread_safe = trueにしておいて、今の動作と逆転するような感じだと良いですかね?

無視するか動作を逆転させるかどちらかは別として、引数を削るのは賛成しかねます。
----------------------------------------
Feature #4483: PStoreをデフォルトで複数のスレッドから扱えるようにしたい
http://redmine.ruby-lang.org/issues/4483

Author: Masaki Matsushita
Status: Open
Priority: Normal
Assignee:
Category: lib
Target version:


PStoreは、デフォルトでは他のスレッドがトランザクションを実行中にトランザクションに入ろうとすると例外nested 
transactionを発生させます。

initialize時に第2引数が真であれば、別のスレッドがトランザクションから抜けるまで待つようになりますが、
PStoreの用途から考えると、わざわざ引数にそのような指定をしなくても例外を投げずに待ってくれた方が嬉しいと思うのですが、いかがでしょうか。

PStore.newの第2引数を削除し、別のスレッドがトランザクションを実行中でもデフォルトで例外を投げずに待つようにしたpstore.rbと、
それに合わせて改変したtest_pstore.rbのパッチを添付します。
Posted by Masaki Matsushita (Guest)
on 2011-03-08 08:01
(Received via mailing list)
Issue #4483 has been updated by Masaki Matsushita.


PStoreはRubyのオブジェクトを外部ファイルに格納する為のクラスな訳ですから、あるスレッドがトランザクションを実行中に別のスレッドがトランザクションに入ろうとした場合に、整合性を保つ為に同期する理由はあっても、例外を投げる理由はないのではと考えました。

そこで第2引数を削除したパッチを添付したのですが、確かにいきなり第2引数をなくしてしまうというのはやりすぎだったかも知れません。
それと、私が嬉しいかどうかをこういう場で引き合いに出したのは正しくなかったと思います。

Shota Fukumoriさんの案に賛成します。
ただ、thread_safe = trueとした場合でも、PStore.newに第2引数を与えずにnested 
transaction例外を想定しているコードには影響してしまいますね。
----------------------------------------
Feature #4483: PStoreをデフォルトで複数のスレッドから扱えるようにしたい
http://redmine.ruby-lang.org/issues/4483

Author: Masaki Matsushita
Status: Open
Priority: Normal
Assignee:
Category: lib
Target version:


PStoreは、デフォルトでは他のスレッドがトランザクションを実行中にトランザクションに入ろうとすると例外nested 
transactionを発生させます。

initialize時に第2引数が真であれば、別のスレッドがトランザクションから抜けるまで待つようになりますが、
PStoreの用途から考えると、わざわざ引数にそのような指定をしなくても例外を投げずに待ってくれた方が嬉しいと思うのですが、いかがでしょうか。

PStore.newの第2引数を削除し、別のスレッドがトランザクションを実行中でもデフォルトで例外を投げずに待つようにしたpstore.rbと、
それに合わせて改変したtest_pstore.rbのパッチを添付します。
Posted by Shota Fukumori (Guest)
on 2011-03-08 08:11
(Received via mailing list)
Issue #4483 has been updated by Shota Fukumori.


sora_hです

考えてみればどうせblockされるわけで必ずブロック内は実行されるわけで、nested 
transactionはもしダメなら諦める的な感じで捕捉されることを想定しているコードなら
この仕様でも良いかもしれません。transactionが起きているかどうかのコードはin_transactionで調べるべきだと思いますしね。

とりあえず周りの反応次第ですが。その辺の問題が解決できたら入れても良いかもしれないです。

ということで現状は賛成しかね、解決ししだい賛成という立場になります
----------------------------------------
Feature #4483: PStoreをデフォルトで複数のスレッドから扱えるようにしたい
http://redmine.ruby-lang.org/issues/4483

Author: Masaki Matsushita
Status: Open
Priority: Normal
Assignee:
Category: lib
Target version:


PStoreは、デフォルトでは他のスレッドがトランザクションを実行中にトランザクションに入ろうとすると例外nested 
transactionを発生させます。

initialize時に第2引数が真であれば、別のスレッドがトランザクションから抜けるまで待つようになりますが、
PStoreの用途から考えると、わざわざ引数にそのような指定をしなくても例外を投げずに待ってくれた方が嬉しいと思うのですが、いかがでしょうか。

PStore.newの第2引数を削除し、別のスレッドがトランザクションを実行中でもデフォルトで例外を投げずに待つようにしたpstore.rbと、
それに合わせて改変したtest_pstore.rbのパッチを添付します。
Posted by nahi (Guest)
on 2012-03-18 11:08
(Received via mailing list)
Issue #4483 has been updated by nahi.

Description updated
Status changed from Open to Assigned
Assignee set to nahi


----------------------------------------
Feature #4483: PStoreをデフォルトで複数のスレッドから扱えるようにしたい
https://bugs.ruby-lang.org/issues/4483#change-24908

Author: Glass_saga
Status: Assigned
Priority: Normal
Assignee: nahi
Category: lib
Target version:


=begin
PStoreは、デフォルトでは他のスレッドがトランザクションを実行中にトランザクションに入ろうとすると例外nested 
transactionを発生させます。

initialize時に第2引数が真であれば、別のスレッドがトランザクションから抜けるまで待つようになりますが、
PStoreの用途から考えると、わざわざ引数にそのような指定をしなくても例外を投げずに待ってくれた方が嬉しいと思うのですが、いかがでしょうか。

PStore.newの第2引数を削除し、別のスレッドがトランザクションを実行中でもデフォルトで例外を投げずに待つようにしたpstore.rbと、
それに合わせて改変したtest_pstore.rbのパッチを添付します。
=end
Posted by mame (Yusuke Endoh) (Guest)
on 2012-11-20 13:28
(Received via mailing list)
Issue #4483 has been updated by mame (Yusuke Endoh).

Target version set to next minor


----------------------------------------
Feature #4483: PStoreをデフォルトで複数のスレッドから扱えるようにしたい
https://bugs.ruby-lang.org/issues/4483#change-33230

Author: Glass_saga (Masaki Matsushita)
Status: Assigned
Priority: Normal
Assignee: nahi (Hiroshi Nakamura)
Category: lib
Target version: next minor


=begin
PStoreは、デフォルトでは他のスレッドがトランザクションを実行中にトランザクションに入ろうとすると例外nested 
transactionを発生させます。

initialize時に第2引数が真であれば、別のスレッドがトランザクションから抜けるまで待つようになりますが、
PStoreの用途から考えると、わざわざ引数にそのような指定をしなくても例外を投げずに待ってくれた方が嬉しいと思うのですが、いかがでしょうか。

PStore.newの第2引数を削除し、別のスレッドがトランザクションを実行中でもデフォルトで例外を投げずに待つようにしたpstore.rbと、
それに合わせて改変したtest_pstore.rbのパッチを添付します。
=end
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.