11 February '2007 - 13:54 | 技術動向 サーバとクライアントのコラボレーション
さっき 1.0 をリリースしたばかりなのだけれど、Lingr サーバの不調のおかげでさっそく問題を発見。サーバが予期しない動作をしてくれると、クライアントのエラー処理の実装が改善されるという、素晴らしいコラボレーション。
見つけた問題は、セッションを張り直したときにログインに失敗したらプログラムを終了するようにしてあったというもの。これを、!terminate コマンドか SIGNAL 以外では終了しないように治した。これで、明示的に終了させない限りは、たとえサーバ側がまったく応答しなくなっても延々とリトライを続けるようになった。
それから、api_client.rb に手を入れて、セッションのタイムアウトを調節するように変更。120秒では、しょちゅう切れてしまって invalid ticket が起きてしまうからだ。100秒と 90秒で動作の比較してみた結果、どうも 100秒でもまだけっこうタイムアウトすることが分かったので、とりあえず 90秒で動かしてみるようにしてみる。ちなみに、この数字は room/enter の max_observe_time + 10 を使うようにしてある。
最後に、これはコードとは関係ないけれど、ダウンロードしないと中身が見えないのは不便すぎると先生に叱られたので、それはそうだと、http://n.h7a.org/hacks/lingresident/ にソースを展開して置いておくことにした。これで検索にもひっかかるし、すごく便利。一応、上のディレクトリには、bz2 したものも今まで通りに置いてあるので、実際に動かしてみたい人はそれをどうぞ。