[jboss-jira] [JBoss JIRA] (JBJCA-1385) xa-datasource creates twice connections as much as max-pool-size
Bartosz Spyrko-Śmietanko (JIRA)
issues at jboss.org
Fri Sep 28 12:16:00 EDT 2018
[ https://issues.jboss.org/browse/JBJCA-1385?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bartosz Spyrko-Śmietanko updated JBJCA-1385:
--------------------------------------------
Git Pull Request: https://github.com/ironjacamar/ironjacamar/pull/679
> xa-datasource creates twice connections as much as max-pool-size
> ----------------------------------------------------------------
>
> Key: JBJCA-1385
> URL: https://issues.jboss.org/browse/JBJCA-1385
> Project: IronJacamar
> Issue Type: Bug
> Components: Core
> Affects Versions: WildFly/IronJacamar 1.4.2.Final
> Reporter: Bartosz Spyrko-Śmietanko
> Assignee: Bartosz Spyrko-Śmietanko
>
> After createing connections by prefill, xa-datasource can have connection much more than max-pool-size.
> Although prefill try to create connections based on `SemaphoreConcurrentLinkedDequeManagedConnectionPool.poolsize`, the poolsize count is broken after closing connections by test failure.
> `SemaphoreConcurrentLinkedDequeManagedConnectionPool#removeConnectionListenerFromPool() is called 2 times per a connection during closing them, so that the poolsize can be decreased much more than existed connections.
> When the poolsize is 25, it become -25 after closing all connections. And prefill try to create 50 connections until the poolsize count becomes 25 from -25.
> `removeConnectionListenerFromPool()` is called as the following stacktrace during closing 1 connection.
> 1.
> {code}
> org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.removeConnectionListenerFromPool(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:-1)
> org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.returnConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:736)
> org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.returnConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:611)
> org.jboss.jca.core.connectionmanager.pool.AbstractPool.returnConnection(AbstractPool.java:847)
> org.jboss.jca.core.connectionmanager.AbstractConnectionManager.returnManagedConnection(AbstractConnectionManager.java:725)
> org.jboss.jca.core.connectionmanager.listener.AbstractConnectionListener.connectionErrorOccurred(AbstractConnectionListener.java:472)
> org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection.broadcastConnectionError(BaseWrapperManagedConnection.java:673)
> org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.broadcastConnectionError(XAManagedConnection.java:203)
> org.jboss.jca.adapters.jdbc.xa.XAManagedConnection$1.connectionErrorOccurred(XAManagedConnection.java:91)
> org.postgresql.ds.PGPooledConnection.fireConnectionFatalError(PGPooledConnection.java:183)
> org.postgresql.ds.PGPooledConnection.fireConnectionError(PGPooledConnection.java:237)
> org.postgresql.ds.PGPooledConnection.access$200(PGPooledConnection.java:38)
> org.postgresql.ds.PGPooledConnection$StatementHandler.invoke(PGPooledConnection.java:428)
> com.sun.proxy.$Proxy55.execute (Unknown Source)
> org.jboss.jca.adapters.jdbc.CheckValidConnectionSQL.isValidConnection(CheckValidConnectionSQL.java:74)
> org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnectionFactory.isValidConnection(BaseWrapperManagedConnectionFactory.java:1304)
> org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnectionFactory.getInvalidConnections(BaseWrapperManagedConnectionFactory.java:1086)
> org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:379)
> org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:632)
> org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:604)
> org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:624)
> org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:430)
> org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:789)
> org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:138)
> org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:64)
> ...
> {code}
> 2.
> {code}
> org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.removeConnectionListenerFromPool(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:-1)
> org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:452)
> org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:632)
> org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:604)
> org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:624)
> org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:430)
> org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:789)
> org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:138)
> org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:64)
> ...
> {code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jboss-jira
mailing list