activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergiy Barlabanov (JIRA)" <j...@apache.org>
Subject [jira] [Created] (AMQ-5258) Connection reference leak in PooledConnectionFactory leading to expired connections stuck in the pool
Date Thu, 03 Jul 2014 09:52:25 GMT
Sergiy Barlabanov created AMQ-5258:
--------------------------------------

             Summary: Connection reference leak in PooledConnectionFactory leading to expired
connections stuck in the pool
                 Key: AMQ-5258
                 URL: https://issues.apache.org/jira/browse/AMQ-5258
             Project: ActiveMQ
          Issue Type: Bug
          Components: activemq-pool
    Affects Versions: 5.10.0, 5.9.1
            Reporter: Sergiy Barlabanov


org.apache.activemq.jms.pool.PooledConnectionFactory creates a connection on startup without
giving it back to the pool. So no close() method of PooledConnection is called and so no decrementReferenceCount
is called on ConnectionPool. So referenceCount never becomes 0.
Later on if an exception occurs and hasExpired of ConnectionPool is set to true, the connection
will not be closed since expiredCheck of ConnectionPool compares referenceCount with 0 and
does close() only if it is 0.
So we have a dead ConnectionPool instance and all usages result in "XXX closed" errors.

The fix would be to add call to close() just after doing createConnection() in PooledConnectionFactory#start()
to make referenceCount go to 0. Something like this:

    public void start() {
        LOG.debug("Staring the PooledConnectionFactory: create on start = {}", isCreateConnectionOnStartup());
        stopped.set(false);
        if (isCreateConnectionOnStartup()) {
            try {
                // warm the pool by creating a connection during startup
                createConnection().close(); // <--- makes sure referenceCount goes to 0
            } catch (JMSException e) {
                LOG.warn("Create pooled connection during start failed. This exception will
be ignored.", e);
            }
        }
    }




--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message