From: matz@... (Yukihiro Matsumoto) Date: 2002-09-27T11:21:17+09:00 Subject: [ruby-dev:18395] Re: pstore.rb can make a broken store まつもと ゆきひろです In message "[ruby-dev:18391] pstore.rb can make a broken store" on 02/09/26, YANAGAWA Kazuhisa writes: |# お願いされたから書いてみよう :-) | |psore.rb はファイルに書き込むとき rewind して write して truncate して |ますが,これだと外から SIGKILL を送られたりする中途半端な書き込みになっ |て,データが壊れてしまうんじゃないかと思います. | |別のファイルに書いて rename するとか,何かもっと安全な手段をとるべきだ |と思うのですが,どうでしょうか. | |# だいたい後に付けたパッチのような感じでいいのかな? ついでに abort し |# たとき content を unref してないのも直してます. すでに田中さんからフォローがありましたが、ロックひとつとって もきちんと実装するのは難しいことですねえ。 |それとは別ですが.... thread safe じゃないというか,複数のスレッドから |アクセスすると nested transaction で例外があがるっていうのはちょっと変 |な気がします. | |方針の問題にもなりますが.1 プロセスでは高々一つのトランザクションしか |走らないっていうのも,それはそれで有りかも.それでも nested はうそだし |な,と. pstoreはproof of conceptな作品のつもりだったのですが、予想外 に使われてますよねえ。上記のようなことも考慮して改良したいと いう方がいらっしゃればメンテナをお譲りしてもよいのですが。 まつもと ゆきひろ /:|)