You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Raphiki (JIRA)" <ji...@apache.org> on 2017/02/23 15:48:44 UTC

[jira] [Commented] (AMQ-4366) PooledConnectionFactory closes connections that are in use

    [ https://issues.apache.org/jira/browse/AMQ-4366?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15880678#comment-15880678 ] 

Raphiki commented on AMQ-4366:
------------------------------

An expired connection is now not closed if used by an other thread but there is nothing preventing the loan of an expiryConnection isn't it ?

The [connectionPool.borrow()|http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-jms-pool/5.11.0/org/apache/activemq/jms/pool/PooledConnectionFactory.java#236] just call the expiryCheck() throught the [validateObject()|http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-jms-pool/5.11.0/org/apache/activemq/jms/pool/PooledConnectionFactory.java#135] method but it considers the connection valid (and so reusable) if it has expired but has still some remaining reference...

On my environment my expiryTimeout of 60 seconds is rarely reached (unless I assign a connection for each consumer but I can't do that in production environment).

> PooledConnectionFactory closes connections that are in use
> ----------------------------------------------------------
>
>                 Key: AMQ-4366
>                 URL: https://issues.apache.org/jira/browse/AMQ-4366
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: activemq-pool
>    Affects Versions: 5.7.0, 5.8.0
>            Reporter: Petr Janata
>            Assignee: Timothy Bish
>             Fix For: 5.9.0
>
>         Attachments: poolConClose.diff
>
>
> {{PooledConnectionFactory}} closes connections that are still referenced and should not be closed. Happens only when connection idle or expire time passes. Calling {{createConnection}} after that time will invalidate the connection and all previously obtained {{Sessions}} will behave as closed.
> Due to default 30 second idle timeout, it is likely not to cause problems when:
> * connection is continually in use
> * all {{PooledConnection}} s are borrowed at startup
> Client with session whose connection was prematurely closed will see similar stacktrace:
> {noformat}
> javax.jms.IllegalStateException: The Session is closed
>                 at org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:731)
>                 at org.apache.activemq.ActiveMQSession.configureMessage(ActiveMQSession.java:719)
>                 at org.apache.activemq.ActiveMQSession.createBytesMessage(ActiveMQSession.java:316)
>                 at org.apache.activemq.pool.PooledSession.createBytesMessage(PooledSession.java:168)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)