なひです. > From: matz / ev.netlab.co.jp > Sent: Monday, March 15, 1999 3:31 PM > |60秒に一度保存するスレッドが走ってましたよね確か. > |そいつからのExceptionだけは例外視するとか... > > 例外を例外視するのはなかなか.^^;;; うう...失礼しました.^^; > 冗談はともかく,スレッド内部で例外が発生しちゃうとそのスレッ > ドが黙ってなくなってしまうんです.これは仕様です.スレッドで > はちゃんと例外を捕捉しましょう. 気を付けます(ハマる前でよかった ^^;). スレッド内で捕まえれば平気なんですよね? 発生した瞬間にお亡くなりになってしまうわけでなく... 0> ruby -e 'Thread.start do; begin raise Exception; rescue; end; p "end"; end' "end" 0> ruby -v ruby 1.2.3(99/02/16) [sparc-solaris2.5.1] 0> ...良かった.(^_^; > |signalは全員に飛んでくる(?)ので(?)仕方ない(?) > > signalは > > SIGVTALRMは無視 > SIGINTはmain threadに > 後はそのときたまたま実行してた運の悪い奴に > > 届きます. 解説ありがとうございます.POSIX threadと混同して (というか,何も考えずに思い込んでしまって)いました. 気を付けます. # もちろんpthreadでも,全員に一斉に(どうやるんだ) # 飛んでくるわけではありませんね...^^; > そーいえば SIGPIPE をどーにかしようと思ったきり忘れてた. > どうするのが適切なんでしょうねえ. これはどの話でしたでしょうか. 私がごちゃごちゃ言ってたヤツでしたっけ... > From: matz / ev.netlab.co.jp > Sent: Monday, March 15, 1999 3:58 PM > |> あ〜,そこまで対処できるでしょうか.というかそこまで対処して > |> るサーバがあるでしょうか? 特にdisk fullはUNIX系OSではほとん > |> ど検出できないような気が…. > | > |そうなんですかぁ。どこかにこういう問題に対するよいパターンが落ちてるん > |じゃないかと期待してたんですがTT > | > |# よく出来たDBに投げる、というのもありだが(よく使う) > > 無理なんじゃないでしょうか.非同期書き込みの関係でwrite(2)の > 瞬間には検出できませんし,disk fullを通知するsignalもないの > で.「良くできたDB」の raw disk に直接書き込みに行くタイプだ > と検出できますね. 非同期書き込みの場合(*)を良く知らないのでなんとも言えませんが, 大抵の場合は,write(2)の戻り値を見張ってれば, なんとかなりませんかね... Rubyだと...io_syswriteから,SystemCallError? でしょうか? # (*) 最近のSolarisでUFS loggingしてたりすると, # write(2)の戻り値では検出できない? のでしょうか... # すいません調べてません. ## ?が多くてすいません.適宜無視してください.m(..m