[
https://jira.jboss.org/jira/browse/JBRULES-2340?page=com.atlassian.jira.p...
]
Mark Proctor commented on JBRULES-2340:
---------------------------------------
The problem happens when we have a PropagationQueueingNode. Which executes:
public void queueWorkingMemoryAction(final WorkingMemoryAction action) {
synchronized ( this.actionQueue ) {
try {
startOperation();
this.actionQueue.add( action );
this.agenda.notifyHalt();
} finally {
endOperation();
}
}
}
This also notifies the agenda.halt which causes it to interrupt and continue executing
fireUntilHalt. But there it locks on workingMemory.executeQueuedActions() because we are
in the middle of an insert action. The insert action creates an activation which notifies
agenda.halt, however we aren't waiting on that yet, because we are still stuck on
workingMemory.executeQueuedActions(). The insert finishes and the
workingMemory.executeQueuedActions() returns and then it goes to wait on agenda.halt again
- missing the necessary interruption to make it evaluate the agenda again.
FireUntilHalt has race condition when using different entry points
------------------------------------------------------------------
Key: JBRULES-2340
URL:
https://jira.jboss.org/jira/browse/JBRULES-2340
Project: Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: drools-core, drools-core (expert)
Affects Versions: 5.1.0.M1
Reporter: Mark Proctor
Assignee: Mark Proctor
Fix For: 5.1.0.M2
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira