]
Tibor Zimányi commented on DROOLS-2426:
---------------------------------------
It looks like it is a race condition between fireUntilHalt thread and expire thread. I put
some debugging output to the engine and this is the log for a failed run [1]. At the end
of the log there are 2 deletes, so that means the facts deleted didn't produce
activations because they expired.
Passing run has this output [2].
[1]
ParallelEvaluationTest.testFireUntilHaltWithExpiration2 fails with
lower amount of processors
---------------------------------------------------------------------------------------------
Key: DROOLS-2426
URL:
https://issues.jboss.org/browse/DROOLS-2426
Project: Drools
Issue Type: Bug
Components: core engine
Affects Versions: 7.7.0.Final
Reporter: Tibor Zimányi
Assignee: Mario Fusco
The test ParallelEvaluationTest.testFireUntilHaltWithExpiration2 fails randomly, when the
machine on which it is run has smaller amount of processors (tested with 2). It fails
because the engine doesn't produce expected amount of rule fires, so the test waits on
a CountDownLatch. One idea what happens is that one agenda thread expires events from
second agenda on some race condition. But that is a first guess after looking at the code.
Steps to reproduce:
1. Change the number of parallel partitions to 2 here [1]
2. Rebuild drools-core
3. Run the test from PR [2] few times.
[1]
https://github.com/kiegroup/drools/blob/63ea870c89591dfeae1276f582d825670...
[2]
https://github.com/kiegroup/drools/pull/1843