[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