halt()/dispose() race condition in DroolsRuleBaseState
------------------------------------------------------
Key: JBESB-3397
URL:
https://jira.jboss.org/browse/JBESB-3397
Project: JBoss ESB
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Content Based Routing
Reporter: David Ward
Assignee: David Ward
Fix For: 4.9
What happens:
Thread 1 creates a stateful session and spawns daemon Thread 2 (with the correct TCCL).
Thread 2 calls fireUntilHalt() on the stateful session, which suspends that Thread.
Thread 3 calls halt() on the stateful session, which will cause Thread 2 to stop *once all
the rules have finished firing*, however returns immediately.
Thread 3 calls dispose() on the stateful session, *but the rules might not have finished
firing*. This could cause unpredictable results.
What needs to happen:
Thread 1 creates a stateful session and spawns daemon Thread 2 (with the correct TCCL).
Thread 2 calls fireUntilHalt() on the stateful session, which suspends that Thread.
Thread 3 calls halt() on the stateful session, which will cause Thread 2 to stop once all
the rules have finished firing, however returns immediately.
Thread 3 calls join() on Thread 2, which will return *once all the rules have finished
firing* and Thread 2 is done.
Thread 3 calls dispose() on the stateful session safely, as now the rules have finished
firing. This means predictable results.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira