[
https://issues.redhat.com/browse/JBJCA-1347?page=com.atlassian.jira.plugi...
]
Piotr Krokowski commented on JBJCA-1347:
----------------------------------------
Hello. I'm getting a bit desperate, because I can't find this info anywhere, so
adding this comment here is my last hope.
Main question is: *In which version was that fix included?*
Background:
We started to get into this issue massively after datacenter changes (so the root cause is
unrelated - probably connections are closed too eagerly on the DB side).
Some notable fragments from exceptions (issue happens while INVALIDATING a connection):
{{Caused by: java.lang.NullPointerException at
org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:461)}}
Depending on desired behavior (which us unknown to me), it either seems to be an issue
in:
SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:461 and line 441.
or it could be the fact, that pool.getInternalStatistics() should not be nullified by
another thread, while another thread is trying to do the same.
It's hard to tell not knowing the concept.
Please help...
NullPointerException in
SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:441
------------------------------------------------------------------------------------
Key: JBJCA-1347
URL:
https://issues.redhat.com/browse/JBJCA-1347
Project: IronJacamar
Issue Type: Bug
Affects Versions: WildFly/IronJacamar 1.3.2.Final
Environment: CentOS 6
Wildfly 10.0.0.Final (Iron Jacamar 1.3.2.Final)
PostgreSQL Server 9.5.5
PostgreSQL JDBC driver 9.4.1208 and tried with 42.0.0
Oracle Java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)
Reporter: Brett Delle Grazie
Assignee: Flavia Rainone
Priority: Major
Using a PostgreSQL XA datasource with statistics enabled we get a NullPointerException if
the connection fails temporarily.
With JDBC driver 9.4.1208 Wildfly never reconnects to the PostgreSQL server with the next
request and Wildfly must be restarted. With JDBC driver 42.0.0 it does reconnect on next
request.
If statistics are disabled, the NPE does not occur and both drivers reconnect on the next
request as expected.
Specific location of NPE:
https://github.com/ironjacamar/ironjacamar/blob/ironjacamar-1.3.2.Final/c...
Note there is similar code on line 461 of the same class (in the exception handler)
Example configuration follows
With a PostgreSQL datasource configured in Wildfly as:
{code:xml}
<xa-datasource jndi-name="java:/DS.people" pool-name="DS.people"
enabled="true" spy="true" statistics-enabled="true"
use-java-context="true" use-ccm="true">
<driver>postgresql</driver>
<xa-datasource-property
name="ServerName">localhost</xa-datasource-property>
<xa-datasource-property
name="PortNumber">5432</xa-datasource-property>
<xa-datasource-property
name="DatabaseName">peopleviewstore</xa-datasource-property>
<xa-datasource-property
name="ApplicationName">people</xa-datasource-property>
<xa-datasource-property
name="assumeMinServerVersion">9.5</xa-datasource-property>
<xa-datasource-property
name="connectTimeout">10</xa-datasource-property>
<xa-datasource-property
name="currentSchema">public</xa-datasource-property>
<xa-datasource-property
name="hostRecheckSeconds">10</xa-datasource-property>
<xa-datasource-property
name="loginTimeout">10</xa-datasource-property>
<xa-datasource-property
name="logUnclosedConnections">true</xa-datasource-property>
<xa-datasource-property
name="socketTimeout">30</xa-datasource-property>
<xa-datasource-property
name="targetServerType">master</xa-datasource-property>
<xa-datasource-property
name="tcpKeepAlive">true</xa-datasource-property>
<xa-pool>
<min-pool-size>0</min-pool-size>
<initial-pool-size>0</initial-pool-size>
<max-pool-size>10</max-pool-size>
<allow-multiple-users>false</allow-multiple-users>
</xa-pool>
<timeout>
<xa-resource-timeout>0</xa-resource-timeout>
</timeout>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<statement>
<track-statements>true</track-statements>
</statement>
<security>
<user-name></user-name>
<password></password>
</security>
<validation>
<validate-on-match>true</validate-on-match>
<use-fast-fail>true</use-fast-fail>
<exception-sorter
class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
<valid-connection-checker
class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
</validation>
</xa-datasource>
{code}
And corresponding driver configuration:
{code:xml}
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
{code}
we have deployed the JDBC driver as a module, module.xml looks like:
{code:xml}
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.3" name="org.postgresql"
slot="main">
<resources>
<resource-root path="postgresql-42.0.0.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
{code}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)