You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Arthur Naseef (Created) (JIRA)" <ji...@apache.org> on 2012/01/25 01:40:40 UTC

[jira] [Created] (AMQ-3680) Cleanup of temporary destinations by PooledConnection and ConnectionPool either leaks temp dests or deletes too many

Cleanup of temporary destinations by PooledConnection and ConnectionPool either leaks temp dests or deletes too many
--------------------------------------------------------------------------------------------------------------------

                 Key: AMQ-3680
                 URL: https://issues.apache.org/jira/browse/AMQ-3680
             Project: ActiveMQ
          Issue Type: Bug
          Components: JMS client
            Reporter: Arthur Naseef


Creating this as follow-up on AMQ-3457.

AMQ-3457 removed cleanup on call to close() for PooledConnection objects, causing temporary destinations to remain in the broker until all uses of the actual underlying ActiveMQ connection are closed.  Since those other uses of the underlying connection can be held indefinitely, or - on a very active system - there might be almost no time when there are no users of a connection, those temporary destinations essentially create a leak.

The most correct operation would remove the temporary destination for each PooledConnection when it's close() method is called.

Prior to AMQ-3457, updates for AMQ-2349 attempted to resolve this problem, but ended up being overly-aggressive, removing all of the temporary destinations from the underlying connection.  So, one PooledConnection's close() deleted temporary destinations for multiple PooledConnection objects which were still active.

Test case and patch will be provided.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Resolved] (AMQ-3680) Cleanup of temporary destinations by PooledConnection and ConnectionPool either leaks temp dests or deletes too many

Posted by "Timothy Bish (Resolved) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AMQ-3680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Timothy Bish resolved AMQ-3680.
-------------------------------

       Resolution: Fixed
    Fix Version/s: 5.6.0
         Assignee: Timothy Bish

Fix applied with a few mods and license header additions.
                
> Cleanup of temporary destinations by PooledConnection and ConnectionPool either leaks temp dests or deletes too many
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-3680
>                 URL: https://issues.apache.org/jira/browse/AMQ-3680
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client
>            Reporter: Arthur Naseef
>            Assignee: Timothy Bish
>             Fix For: 5.6.0
>
>         Attachments: TestConnectionPoolTempCleanup.java, pooledConnCleanupOwnTemps.patch
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Creating this as follow-up on AMQ-3457.
> AMQ-3457 removed cleanup on call to close() for PooledConnection objects, causing temporary destinations to remain in the broker until all uses of the actual underlying ActiveMQ connection are closed.  Since those other uses of the underlying connection can be held indefinitely, or - on a very active system - there might be almost no time when there are no users of a connection, those temporary destinations essentially create a leak.
> The most correct operation would remove the temporary destination for each PooledConnection when it's close() method is called.
> Prior to AMQ-3457, updates for AMQ-2349 attempted to resolve this problem, but ended up being overly-aggressive, removing all of the temporary destinations from the underlying connection.  So, one PooledConnection's close() deleted temporary destinations for multiple PooledConnection objects which were still active.
> Test case and patch will be provided.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (AMQ-3680) Cleanup of temporary destinations by PooledConnection and ConnectionPool either leaks temp dests or deletes too many

Posted by "Arthur Naseef (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AMQ-3680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Arthur Naseef updated AMQ-3680:
-------------------------------

    Attachment: pooledConnCleanupOwnTemps.patch

Patch which adds the correct cleanup on close() of PooledConnection.

                
> Cleanup of temporary destinations by PooledConnection and ConnectionPool either leaks temp dests or deletes too many
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-3680
>                 URL: https://issues.apache.org/jira/browse/AMQ-3680
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client
>            Reporter: Arthur Naseef
>         Attachments: pooledConnCleanupOwnTemps.patch
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Creating this as follow-up on AMQ-3457.
> AMQ-3457 removed cleanup on call to close() for PooledConnection objects, causing temporary destinations to remain in the broker until all uses of the actual underlying ActiveMQ connection are closed.  Since those other uses of the underlying connection can be held indefinitely, or - on a very active system - there might be almost no time when there are no users of a connection, those temporary destinations essentially create a leak.
> The most correct operation would remove the temporary destination for each PooledConnection when it's close() method is called.
> Prior to AMQ-3457, updates for AMQ-2349 attempted to resolve this problem, but ended up being overly-aggressive, removing all of the temporary destinations from the underlying connection.  So, one PooledConnection's close() deleted temporary destinations for multiple PooledConnection objects which were still active.
> Test case and patch will be provided.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (AMQ-3680) Cleanup of temporary destinations by PooledConnection and ConnectionPool either leaks temp dests or deletes too many

Posted by "Arthur Naseef (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AMQ-3680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Arthur Naseef updated AMQ-3680:
-------------------------------

    Attachment: TestConnectionPoolTempCleanup.java

JUnit that quickly demonstrates the issue.

Includes code to test that a connection's temporary destinations are removed as well as another test that one connection doesn't remove the temp destinations of another.
                
> Cleanup of temporary destinations by PooledConnection and ConnectionPool either leaks temp dests or deletes too many
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-3680
>                 URL: https://issues.apache.org/jira/browse/AMQ-3680
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client
>            Reporter: Arthur Naseef
>         Attachments: TestConnectionPoolTempCleanup.java, pooledConnCleanupOwnTemps.patch
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Creating this as follow-up on AMQ-3457.
> AMQ-3457 removed cleanup on call to close() for PooledConnection objects, causing temporary destinations to remain in the broker until all uses of the actual underlying ActiveMQ connection are closed.  Since those other uses of the underlying connection can be held indefinitely, or - on a very active system - there might be almost no time when there are no users of a connection, those temporary destinations essentially create a leak.
> The most correct operation would remove the temporary destination for each PooledConnection when it's close() method is called.
> Prior to AMQ-3457, updates for AMQ-2349 attempted to resolve this problem, but ended up being overly-aggressive, removing all of the temporary destinations from the underlying connection.  So, one PooledConnection's close() deleted temporary destinations for multiple PooledConnection objects which were still active.
> Test case and patch will be provided.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira