Re: Connection.isValid(int timeout) implementation
От | Vlad Arkhipov |
---|---|
Тема | Re: Connection.isValid(int timeout) implementation |
Дата | |
Msg-id | 4FD304AF.30707@dc.baikal.ru обсуждение исходный текст |
Ответ на | Re: Connection.isValid(int timeout) implementation (Craig Ringer <ringerc@ringerc.id.au>) |
Список | pgsql-jdbc |
On 06/09/2012 03:19 PM, Craig Ringer wrote:
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>
On 06/09/2012 10:28 AM, Vlad Arkhipov wrote:https://issues.jboss.org/browse/JBTM-1183However 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?Yes, I have these lines in the datasource description. However the recovery subsystem does not use them.
<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().
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>
В списке pgsql-jdbc по дате отправления: