2003-09-02 163850 [長年日記]

[Q3] IMAP4サーバの複数セッション (3)

おととい書いたように、最後にSELECTした時間を保持しておいて、必要に応じてSELECTしなおすようにしました。詳細は、BTS:283を。

[Q3] フォルダごとにHTMLメールを表示するかどうかを指定

ふと思ったのですが、フォルダごとにHTMLメールを表示するか(ついでにリモートからデータを取ってきても良いかどうか)を指定できると便利かもしれませんね。

xreaのruby

お気づきの方もいると思いますが、snak.orgXREAでホストしています。バグトラックが不安定だという問題があって色々試しながら調べていたのですが、最近安定しているようなので何をやったのか書いておきます。ただ、これが原因であるかどうかはわからないです。そこでなぜそんな判断をしたかというあたりも含めて残しておきます。

現象としては以下のような問題が発生します。

  • 時々Rubyが例外(多くの場合TypeError)を発生する(CGI.newから呼び出されているメソッドから発生することが多い)。時々NameErrorがテンプレートを解釈中に発生することもある
  • 時々Segmentation Faultでcgiがクラッシュする(CGI.newから呼び出されているメソッドの中でクラッシュする)

そしてなぜか、以下のようにすると直ってしまいます(でも、しばらくすると再発します)。

  • ソースを一行少しだけ書き換えてみる
  • Cookieをオフにする

この前Segmentation Faultでクラッシュするのが再現するようになったので、パケットをキャプチャしてみたところ、ブラウザ側から送られているリクエスト自体には問題がないようでした。そして、そのキャプチャしたリクエストを少しずつ加工しながら、telnetでサーバに送りつけて調べてみたところ、Cookieを削らなくても、一部の値を取り除いたり、キーの名前を変えたりするとエラーが発生しなくなることがあるというところまで分かりました。

つまり、原因としては以下の要因が考えられます。

  • サーバがリクエストを受け取ってからcgiに渡すまでの間に何かが起きている
  • cgi.rbがおかしい
  • xreaのrubyがおかしい

しかし、スクリプトを一行書き換えると直るというあたりを見ると、サーバがリクエストを受け取ってからcgiに渡すまでの間に何かが起きているという線は薄そうです。逆にcgi.rbがおかしいということならば、前のサーバでも起きていてもおかしくないです。また、xreaとrubyでエラーが起きるというのはtDiary方面からも幾つか報告があがっているようですので、xrea固有の問題である可能性が高い気がします。

と考えると、xreaのruby自体がおかしいという線が一番有力です。そこで改めて考えてみると、サーバがRedHat 7.3で、rubyのパスは/usr/local/bin/rubyということは、rubyはRPMからではなくてサーバ上でコンパイルされた可能性が高いのではないかと考えられます。そして、RedHat 7.3のgccは安定版ではなく最適化関係などなどで色々なバグがあったgcc-2.96系です。そこで、gccのバグでよろしくないrubyが出来てしまったのではないかという推測をしてみました。

そこで、手近にあったRedHat 7.3にgcc-2.95.3を入れ(RPMはないのでソースからビルドします)、ruby-1.6.8をコンパイルしてみました。ついでに、ruby-postgresとruby-dbiもコンパイルしてみました。で、それをサーバのユーザディレクトリにインストールして、/usr/local/bin/rubyの代わりにそちらを使うようにしてみました。

入れ替えてから一週間弱経過しましたが、私のところではエラーが発生しなくなりました。まだ実績が少ないのでなんとも言えませんが、改善する可能性があるかも、程度のことは言えるのではないかと思います。

本日のツッコミ(全4件) [ツッコミを入れる]
# 青山 広志 (2003-09-03 10:04)

複数セッション対応は 0902版からでしょうか? いずれにしても試してみます. ありがとうございます.

# Satoshi Nakamura (2003-09-03 10:12)

そうです。今日のNightly Buildからですので、20030902からになります。
普段Courierをそれほど使っていないため、余りこなれていないと思いますので、おかしかったら教えてください。

# sunoko (2003-09-03 14:52)

xreaとrubyの件、情報ありがとうございました。個人的にすっきりしました。
xreaはこの件を把握しているのかなぁ。できればxreaで対処してもらいたいですね。

# Satoshi Nakamura (2003-09-03 17:44)

少しはお役に立てたようで良かったです。
Webで検索してみた限りでは、xrea側では認識していないのではないかと思います。
状況証拠しかなくこれが原因だと言い切れないので、もうしばらく様子を見て調子が良いようだったら、xreaの方に問い合わせてみようと思っています。