CXF JMSContinuation leaks threads
---------------------------------

                 Key: CXF-3426
                 URL: https://issues.apache.org/jira/browse/CXF-3426
             Project: CXF
          Issue Type: Bug
          Components: Transports
    Affects Versions: 2.3.3, 2.3.2, 2.3.1, 2.2.12, 2.2.11, 2.3.0
            Reporter: Willem Jiang
            Assignee: Willem Jiang


JMSContinuation contains this method:
{code}
protected void createTimerTask(long timeout) {
        timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                synchronized (JMSContinuation.this) { 
                    if (isPending) {
                        doResume();
                    }
                }
            }
        }, timeout);
    }
{code}
The 'if' statement should be changed to:
{code}
if (isPending) {
            cancelTimerTask();
            doResume();
}
{code}
The current impl causes cancel() not to be called on the Timer instance if 
timeout is triggered. This causes threads created by Timer instances to be 
leaked.

Please note: as stated above - the leak is only observable when timeouts are 
triggered on these continuations. If no timeouts are triggered and the orginary 
resume() method is called, this class does nto leak threads.


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to