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