[jboss-jira] [JBoss JIRA] (DROOLS-2426) ParallelEvaluationTest.testFireUntilHaltWithExpiration2 fails with lower amount of processors
Tibor Zimányi (JIRA)
issues at jboss.org
Wed Mar 28 11:32:00 EDT 2018
[ https://issues.jboss.org/browse/DROOLS-2426?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13553021#comment-13553021 ]
Tibor Zimányi commented on DROOLS-2426:
---------------------------------------
>From debugging it looks like that the problem could be based on flushing expirations here [1], more specifically here [2]. The expirations are partition based, that's correct, but the tuples retraction [2] is done based on FactHandle. FactHandle is not partition aware, we have just one FactHandle for a single fact. This could cause that all tuples from all partitions for the FactHandle gets retracted and the FactHandle gets expired. In such case, propagations for this FactHandle that aren't processed in some other parallel agenda instance doesn't produce fires, although they should.
[1] https://github.com/kiegroup/drools/blob/af3fe1785c81a30979b4c169a3181d08348825a6/drools-core/src/main/java/org/drools/core/common/DefaultAgenda.java#L1497
[2] https://github.com/kiegroup/drools/blob/af3fe1785c81a30979b4c169a3181d08348825a6/drools-core/src/main/java/org/drools/core/common/DefaultAgenda.java#L1504
> 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/63ea870c89591dfeae1276f582d825670fe7ec3a/drools-core/src/main/java/org/drools/core/common/RuleBasePartitionId.java#L31
> [2] https://github.com/kiegroup/drools/pull/1843
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jboss-jira
mailing list