[jboss-jira] [JBoss JIRA] (JBJCA-1347) NullPointerException in SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:441
Piotr Krokowski (Jira)
issues at jboss.org
Thu Jan 23 07:35:12 EST 2020
[ https://issues.redhat.com/browse/JBJCA-1347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13955296#comment-13955296 ]
Piotr Krokowski commented on JBJCA-1347:
----------------------------------------
Looks like a duplicate. It might be helpful to someone in the future to find this relation - took me a while :)
BTW. It's fixed in 1.3.3 (this piece of information is missing here).
> 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/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreConcurrentLinkedDequeManagedConnectionPool.java#L441
> 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)
More information about the jboss-jira
mailing list