[jboss-jira] [JBoss JIRA] (JBJCA-1398) Connection leak when there is an exception during getConnection for NoTransaction resource adapter
Ilia Vassilev (Jira)
issues at jboss.org
Wed Dec 11 10:46:01 EST 2019
[ https://issues.redhat.com/browse/JBJCA-1398?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilia Vassilev reassigned JBJCA-1398:
------------------------------------
Assignee: Stefano Maestri
> Connection leak when there is an exception during getConnection for NoTransaction resource adapter
> --------------------------------------------------------------------------------------------------
>
> Key: JBJCA-1398
> URL: https://issues.redhat.com/browse/JBJCA-1398
> Project: IronJacamar
> Issue Type: Bug
> Components: Core
> Affects Versions: 1.0.31.Final, 1.0.38.Final, 1.4.10
> Reporter: Stephen Fikes
> Assignee: Stefano Maestri
> Priority: Major
> Labels: downstream_dependency
>
> When an exception occurs with a {{NoTransaction}} resource adapter during a {{getConnection}} attempt the pool leaks the connection. The exception (simulating a timeout of the underlying connect attempt) detail is below.
> {code}
> ... WARNING [support.jboss.ejb.session.SessionBean] (ServerService Thread Pool -- 51) Failed to get a connection: IJ000456: Unchecked throwable in ManagedConnection.getConnection() cl=org.jboss.jca.core.connectionmanager.listener.NoTxConnectionListener at 1a933f80[state=NORMAL managed connection=support.redhat.jboss.jca.ManagedConnectionImpl at 7a294431 connection handles=0 lastUse=1575419355891 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool at 1d6a5362 pool internal context=SemaphoreArrayListManagedConnectionPool at 2f47607f[pool=EisConnectionFactory]]: javax.resource.ResourceException: IJ000456: Unchecked throwable in ManagedConnection.getConnection() cl=org.jboss.jca.core.connectionmanager.listener.NoTxConnectionListener at 1a933f80[state=NORMAL managed connection=support.redhat.jboss.jca.ManagedConnectionImpl at 7a294431 connection handles=0 lastUse=1575419355891 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool at 1d6a5362 pool internal context=SemaphoreArrayListManagedConnectionPool at 2f47607f[pool=EisConnectionFactory]]
> at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:521)
> at support.redhat.jboss.jca.ConnectionFactoryImpl.getConnection(ConnectionFactoryImpl.java:61)
> ...
> Caused by: javax.resource.ResourceException: Simulate timeout
> at support.redhat.jboss.jca.ManagedConnectionImpl.getConnection(ManagedConnectionImpl.java:61)
> at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:508)
> ...
> {code}
> There seems to be a difference in a {{NoTransaction}} and an {{XATransaction}} adapter where {{returnConnection}} is triggered by the {{TxConnectionManagerImpl}}.
> {code}
> ... [BMAN] org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.returnConnection(SemaphoreArrayListManagedConnectionPool.java:-1)
> ... org.jboss.jca.core.connectionmanager.pool.AbstractPool.returnConnection(AbstractPool.java:633)
> ... org.jboss.jca.core.connectionmanager.AbstractConnectionManager.returnManagedConnection(AbstractConnectionManager.java:456)
> ... org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionDisconnected(TxConnectionManagerImpl.java:515)
> ... org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:525)
> {code}
> For a {{NoTransaction}} adapter, however, the abstract implementation is used:
> {code}
> ... [BMAN] org.jboss.jca.core.connectionmanager.AbstractConnectionManager.managedConnectionDisconnected(AbstractConnectionManager.java:697)
> ... org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:525)
> {code}
> The empty implementation for [AbstractConnectionManager.managedConnectionDisconnected|https://github.com/ironjacamar/ironjacamar/blob/ironjacamar-1.0.43.Final/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java#L690] does nothing so the connection is not returned as it would be for a transactional implementation.
> I also see the same issue with IronJacamar 1.4.18.Final so this issue remains in the latest release.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
More information about the jboss-jira
mailing list