Re: Connection.isValid(int timeout) implementation

From: Craig Ringer <ringerc(at)ringerc(dot)id(dot)au>
To: Vlad Arkhipov <arhipov(at)dc(dot)baikal(dot)ru>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Connection.isValid(int timeout) implementation
Date: 2012-06-09 06:19:22
Message-ID: 4FD2EAEA.3010807@ringerc.id.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On 06/09/2012 10:28 AM, Vlad Arkhipov wrote:
> On 06/08/2012 10:43 PM, Craig Ringer wrote:
>> On 06/08/2012 07:32 PM, Vlad Arkhipov wrote:
>>> The current PostgreSQL driver (9.1-904) does not contain an
>>> implementation of JDBC4 method Connection.isValid(int timeout).
>>
>> Looks like it's since been implemented. It was commited by Dave
>> Cramer on 2012-01-19 in commit 773f8e45, based on a patch by Louis
>> Flores.
>>
> Found it on master branch. Thank you.
>
>>> 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.

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().

--
Craig Ringer

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Vlad Arkhipov 2012-06-09 08:09:19 Re: Connection.isValid(int timeout) implementation
Previous Message Vlad Arkhipov 2012-06-09 02:28:53 Re: Connection.isValid(int timeout) implementation