You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Christian Schneider (JIRA)" <ji...@apache.org> on 2017/03/15 11:30:42 UTC
[jira] [Comment Edited] (CXF-6454) Orphaned JMS connections created
in endless loop
[ https://issues.apache.org/jira/browse/CXF-6454?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15925926#comment-15925926 ]
Christian Schneider edited comment on CXF-6454 at 3/15/17 11:29 AM:
--------------------------------------------------------------------
What is the status of this? I have seen two pull requests but both are closed now.
The pull requests also seemed to be quite extensive .. much more than a simple bug fix.
Can we maybe discuss a design and then open a new issue that documents the problem and the agreed on design. This issue has grown quite large and it is difficult to work through the comments and get a clear pricture. If there is interest I am also available on google hangouts for a personal chat to discuss possible solutions.
My hangouts id is cschneider111::at::gmail.com (replace ::at:: with @ of course). .. oh and you can also reach me in the #apache-cxf channel on irc.
was (Author: chris@die-schneider.net):
What is the status of this? I have seen two pull requests but both are closed now.
The pull requests also seemed to be quite extensive .. much more than a simple bug fix.
Can we maybe discuss a design and then open a new issue that documents the problem and the agreed on design. This issue has grown quite large and it is difficult to work through the comments and get a clear pricture. If there is interest I am also available on google hangouts for a personal chat to discuss possible solutions.
My hangouts id is cschneider111::at::gmail.com (replace ::at:: with @ of course).
> Orphaned JMS connections created in endless loop
> ------------------------------------------------
>
> Key: CXF-6454
> URL: https://issues.apache.org/jira/browse/CXF-6454
> Project: CXF
> Issue Type: Bug
> Components: JMS, Transports
> Affects Versions: 3.0.5
> Reporter: Waldemar Szostak
> Assignee: Christian Schneider
> Priority: Critical
> Fix For: 3.0.7, 3.2.0
>
>
> h3. Problem description
> In JMSFactory.createConnection(JMSConfiguration):
> {code}public static Connection createConnection(JMSConfiguration jmsConfig) throws JMSException {
> String username = jmsConfig.getUserName();
> ConnectionFactory cf = jmsConfig.getConnectionFactory();
> Connection connection = username != null
> ? cf.createConnection(username, jmsConfig.getPassword())
> : cf.createConnection();
> if (jmsConfig.getDurableSubscriptionClientId() != null) {
> connection.setClientID(jmsConfig.getDurableSubscriptionClientId());
> }
> return connection;
> }{code}
> there is no exception handling if the clientID fails to be set. Such an exception would exit this method without passing the reference to the just-opened JMS connection to exception handling code (JMSDestination.createTargetDestinationListener()).
> Moreover, JMSDestination.restartConnection() keeps on starting new connections (there is no max attempt restriction!) until it creates one without an exception thrown in the process.
> Now, if the clientID is already connected to the ESB, this creation of new connection will last until server resources are no longer available to the JVM.
> h3. Possible solution
> # Close the connection if it's not possible to set the specified clientID at the time:
> {code}public static Connection createConnection(JMSConfiguration jmsConfig) throws JMSException {
> String username = jmsConfig.getUserName();
> ConnectionFactory cf = jmsConfig.getConnectionFactory();
> Connection connection = username != null
> ? cf.createConnection(username, jmsConfig.getPassword())
> : cf.createConnection();
> if (jmsConfig.getDurableSubscriptionClientId() != null) {
> try { connection.setClientID(jmsConfig.getDurableSubscriptionClientId());
> } catch (InvalidClientIDException e) {
> connection.close();
> throw e;
> }
> }
> return connection;
> }{code}
> # Add a setting to restrict the maximum attempts to restart the connection in JMSDestination.restartConnection() A configurable value would be best, but even a hardcoded.. anything but the practically endless loop ;-)
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)