[
https://issues.jboss.org/browse/JBJCA-1385?page=com.atlassian.jira.plugin...
]
Bartosz Spyrko-Śmietanko moved JBEAP-15549 to JBJCA-1385:
---------------------------------------------------------
Project: IronJacamar (was: JBoss Enterprise Application Platform)
Key: JBJCA-1385 (was: JBEAP-15549)
Workflow: classic default workflow (was: CDW with loose statuses v1)
Component/s: Core
(was: JCA)
Affects Version/s: WildFly/IronJacamar 1.4.2.Final
(was: 7.1.4.GA)
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)