[jboss-jira] [JBoss JIRA] (JBJCA-1398) Connection leak when there is an exception during getConnection for NoTransaction resource adapter

Stephen Fikes (Jira) issues at jboss.org
Wed Dec 4 13:11:00 EST 2019


Stephen Fikes created JBJCA-1398:
------------------------------------

             Summary: Connection leak when there is an exception during getConnection for NoTransaction resource adapter
                 Key: JBJCA-1398
                 URL: https://issues.jboss.org/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


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 {{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