[Seasar-user:18694] Re: [S2DBCP] DB再起動後のコネクション取得について

taktos [E-MAIL ADDRESS DELETED]
2009年 10月 20日 (火) 20:10:08 JST


はじめまして、瀧口です。

ちょうど同じ問題に当たっていたので、横から失礼させていただきます。
環境は以下のとおりです。
Seasar: 2.4.33
DB: PostgreSQL 8.3.6 (OSはLinux)
JDBC: postgresql-8.3-605-jdbc4.jar
jdbc.dicon: 佐藤様と同様

PostgreSQLのJDBCドライバの場合ですが、
無効なコネクションに対してrollbackを実行しても例外が発生しません。
そのため、S2DBCPではそのコネクションが生きているものと判断し、
(TransactionImpl#rollbackResourcesと 
ConnectionPoolImpl.SynchronizationImpl#afterCompletion辺り)
本来無効であるコネクションをプールに戻してしまいます。

佐藤様のDB環境が不明でしたので、外していたらすいません。
何かのお役に立てば幸いです。


2009/10/20 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
> 小林 (koichik) です.
>
> Date:    Tue, 20 Oct 2009 01:05:16 +0900
> From:    Satou Mamoru <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:18681] [S2DBCP] DB再起動後のコネクション取得について
>
>> ただ、validationInterval に満たない間隔でDBアクセスを繰り返すと、
>>
>> プールから無効なコネクション取得⇒validationInterval の間隔に満たないので検証未実施⇒
>> 接続失敗⇒プールにコネクションを戻す
>>
>> このような流れになると思います。
>
> S2DBCP では,例外が発生したコネクションは
> プールに戻さないようになっています.
>
>> ここで、最後の「プールにコネクションを戻す」
>> のところで、死活検証で参照されると思われる値(ConnectionPoolItem.FreeItem#pooledTime)も
>> 更新されてしまう?ようで、validationInterval よりも短い間隔でアクセスを繰り返すと、
>> 延々無効なコネクションがプールから取得されてしまうようです。
>
> なので,このような現象になるはずはないのですが,
> 意図したとおりに動作していないのかもしれません.
> 一連のログを見せていただけないでしょうか.
>
>
> --
> <component name="koichik">
>    <property name="fullName">"Koichi Kobayashi"</property>
>    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



Seasar-user メーリングリストの案内