From: | Vlad Arkhipov <arhipov(at)dc(dot)baikal(dot)ru> |
---|---|
To: | Craig Ringer <ringerc(at)ringerc(dot)id(dot)au> |
Cc: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | Re: Connection.isValid(int timeout) implementation |
Date: | 2012-06-09 08:09:19 |
Message-ID: | 4FD304AF.30707@dc.baikal.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
On 06/09/2012 03:19 PM, Craig Ringer wrote:
> On 06/09/2012 10:28 AM, Vlad Arkhipov wrote:
>> However there are some projects that strongly rely on this method to
>> test the connection (for example Arjuna Transaction Manager that is
>> used by JBoss Application Server). Are there any plans of
>> implementing this feature?
>>> Really? JBoss AS 7.1.1.Final is quite happy with PgJDBC
>>> (postgresql-9.1-901-1.jdbc4.jar) here. What's your configuration?
>>> Your -ds.xml or jboss-cli "create datasource" command?
>> They have a memory leak in JTS 4.16.4 (JBoss AS 7.1.1), so if you use
>> XA datasource and the driver does not implement Connection.isValid,
>> Transaction Manager will create and store in memory a new XA
>> connection every 2 minutes.
>
> Good to know. Please post the reference to the JBoss JIRA ticket -
> assuming, as it sounds like, you're referring to an acknowledged bug.
>
> It sounds like it'll be important to make sure that isValid() makes it
> into the 9.2 JDBC driver release.
https://issues.jboss.org/browse/JBTM-1183
> Re your -ds.xml, does setting an explicit connection validator help?
>
> <validation>
> <valid-connection-checker
> class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"></valid-connection-checker>
> <exception-sorter
> class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"></exception-sorter>
> </validation>
>
>
> Otherwise I think it'll use
> org.jboss.jca.adapters.jdbc.extensions.novendor.JDBC4ValidConnectionChecker,
> which I expect won't work without isValid().
Yes, I have these lines in the datasource description. However the
recovery subsystem does not use them.
I debugged a bit more and found out that it's also necessary to specify
the recovery plugin.
<recovery no-recovery="false">
<recovery-plugin
class-name="org.jboss.jca.core.recovery.ValidatingManagedConnectionFactoryRecoveryPlugin"
/>
</recovery>
From | Date | Subject | |
---|---|---|---|
Next Message | wbrana | 2012-06-09 11:25:42 | An I/O error occured while sending to the backend |
Previous Message | Craig Ringer | 2012-06-09 06:19:22 | Re: Connection.isValid(int timeout) implementation |