[Seasar-user:2251] Re: ConnectionPoolの不使用について
加藤太朗
kato
2005年 6月 24日 (金) 11:50:04 JST
小林 さん
ありがとうございました。もろもろの霧が晴れた感じです。
maxPoolSize ほんと思いっきり誤解してました。ちゃんと見直せば良かった。
小林さんの話を読んで、S2DBCPのシンプルさを変えることに抵抗が出てきました。
0でも動作させるということは、「最大同時接続数」という仕様に反することになります。
ConnectionPoolingの仕組みは、他のものもみな 0でも動作するものなのでしょうか。
もう1つは0で動作させるということは実質的に最大同時接続数が設定できないことと
なります。それはまずいですね。どこまで許可するのか分からないことに。
あ!そうか!それで、小林さんは2235で poolするかしないかのenablePoolingフラグを
別途設けたほうがまだ良いとおっしゃったんですね。それが最善なんだ。
…つながった。ようやくつながりました。勘違いって怖いなぁ。
> そうすると,少なくとも ResultSet#getBytes() は完結しているわけで,
> なにが問題で「未読」が残るのか不思議ですね.
そうなんですよ。この原因がわかるまでの道のりがまた長かったんですよ。
PSQLExceptionのログを順に追って、ようやく目星がついたんですよ。まず最初のエラーが
「PSQLException 不明なレスポンス m」なんですね。このmってゴミ?と思いきや次のエラーが
「PSQLException 不明なレスポンス a」むむっ?と思って、続けてみていくと、
「PSQLException 不明なレスポンス g」「… e」「… /」「… x」「… -」「… b」「… m」「… p」
と続いてくんです。それで、ああっ!と気づく。つなげると、mage/x-bmp
そうなんです。画像データを持っているレコードのバイナリ項目の中身らしいんです。
それは最初の64バイトにContext-Typeを保存してそれ以降がバイナリなんでヘッダ辺りのデータなんですね。
もうそれ以降はそのコネクションが解放されるか全部読みきるまで叩くか(実際はやりきれませんでしたが)
しないとズッとこんな調子です。面白いことにPostgresはバイナリも文字で返しているようです。
続けていくと、ヌルバイトが続くところでは、「… \」「… 0」「… 0」「… \」「… 0」「… 0」とどうも
16進表記らしいです。ああ、只のトリビア。
この例外が出る直前のログは、ちょうど S2DAOのログで select文でバイナリ項目を含むレコードを取得している
ところが見えてました。
> > そういう意図がなく、あのwhile文を設けているのであれば、浅はかだと思います。
:
> もう一度,ご自身の書いた文章を読み返してみてはいかがでしょうか?
> その文章が加藤さん自身に向けられたものだとしたらどう思いますか?
> あるいはひがさんの立場で読んでみたらどう思いますか?
あらら、これか。ご指摘のとおり「細心」さが欠けているわけですけど、
私は自分の書いたコードの問題をつっこまれることには、たとえ言い方悪く
てもセンシティブじゃないのでその辺りは甘んじて受け入れます。私が書いた
コードへのフィードバックなんだから歓迎しますよ。
「加藤さん、設定次第で無限ループになるなんて、まずすぎでしょ。ちゃんと作ってよ。」
と言われても全然その通りだと思っちゃいますから、たとえ、「同時接続数0」という
設定なんだから無限にブロックされて当然という意見があったとしても、
そんなプログラマの論理は通用しない世界に身を置いてますので、むしろ歓迎。
私は使う側が混乱しないことに注力する方がよっぽど大事と捉えますので。
(というか、似たような問い合わせが来ないよう予防線を張る)
じゃなきゃSIなんてやってられないですよ。
例外処理が多くなってシンプルじゃなくなっても、トラブルがない平穏な状況を
作り出せる方が良いです。
小林さんがされた対応というのは、無限ループになる前に「0はダメだよー」と
例外を出すというようなこと?
…って、見ました。
あー、私と似たようなことに…。やっぱ0を許すのは最初に挙げた観点から
まずいような…。小林さん案のenablePoolingを検討して欲しいです。
もちろんデフォルトは指定なしで、falseで。
--------------------------------------------------------->>
Gluegent,Inc. T.Kato
http://package.gluegent.com/~kato/signature.xml
---->> generate products and services with high added value
Seasar-user メーリングリストの案内