NanaSHI質問スレ

4995a061 :Anonymous 2005-08-27 01:28
>>ac21beaf
あー違いますね。すいません。
なんとなくupdate処理中に他ノードからのupdateを止めるのは危険な感じがしたので。
実際にはupdateに応答してからwhileに入ってるようなので見当違いでした。

もう少し調査してみたんですが、朔のdo_update()ではupdateを受けてすぐOKを返してますよね?
なのでupdateに対する朔からのOK応答が30秒もかかるのが解せない。しかも30秒ぴったり。
で、30秒はNanaSHIが設定している通信タイムアウト値で、これを10秒にすると10秒でOK応答がきます。
60秒にすると50秒でOK応答がきます。50秒は朔のwhile文のリトライアウト時間みたい。

で、タイムアウトしてるのにエラーせずOKが返ってくるのは変なので、
NanaSHIが使っている通信ライブラリを追ってみた結果、
 select()が朔のstdout.close()を検出できてない!
可能性が浮上しました。
そこで、select()周期を短くしてpollingぽく使ってみたところ問題解決しました。

原因不明で気持ち悪いですが、もう少しテストしてから更新します。
Powered by shinGETsu.