Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-1742

JMS Conduit Pooled Session Recycling

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.1.1
    • Fix Version/s: 2.1.2, 2.0.9
    • Component/s: Transports
    • Labels:
      None
    • Environment:

      N/A

    • Estimated Complexity:
      Novice

      Description

      I believe the doClose method of JMSOutputStream should have the pooled session recycle call within a finally block. As it is now, if the handleResponse call fails due to a timeout an IOException will be thrown by handleResponse. If that happens the recycle call will not happen. We had a large number of timeouts that occurred during a load test. This eventually killed our JMS server due to the number of consumers created.

      The change below seems to have fixed our issue, but please let me know if this is incorrect.

      protected void doClose() throws IOException {
      try {
      isOneWay = outMessage.getExchange().isOneWay();
      commitOutputMessage();
      if (!isOneWay)

      { handleResponse(); }


      } catch (JMSException jmsex)

      { getLogger().log(Level.WARNING, "JMS connect failed with JMSException : ", jmsex); throw new IOException(jmsex.toString()); }

      finally

      { base.sessionFactory.recycle(pooledSession); }

      }

        Attachments

          Activity

            People

            • Assignee:
              ulhasbhole Ulhas Bhole
              Reporter:
              cnelson Chris Nelson
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: