Mukta13 commented on PR #6113: URL: https://github.com/apache/incubator-kie-drools/pull/6113#issuecomment-2429201986
Thanks for the reply! In my case: The error as stated in Issue: https://github.com/apache/incubator-kie-drools/issues/6112 is rooted in non-deterministic behavior in the Drools rule execution due to the modify block. The modify($p) block combines fact ($p)changes and triggers rule re-evaluation of the rule automatically in the same step . Thus, the _timing_ of this re-evaluation can vary, causing inconsistent rule firing orders, leading to random test failures. Because modify($p) triggers immediate re-evaluation of dependent rules, the order and timing of rule firing are varying. The critical point here is **when** the rule engine processes this re-evaluation. The modify block does not guarantee the order in which rules are re-triggered or when this happens during the rule evaluation cycle. This timing-related non-determinism may fire other rules dependent on $p at unpredictable points during the execution, before $p has reached its final state. Thus, this timing related flaky test does not seem to be a false p ositive detected by the non-dex tool, which was detected by non-dex because this timing issue was also causing the non determinsim relating to the order of rule firings, as seen in the error. **How $p.setX() + update($p) instead of modify() fixes the Issue:** Switching from modify($p) to $p.setX() followed by update($p) effectively resolves the timing-related non-determinism in Drools rules execution. By separating the modification and the update, $p.setX() allows for controlled changes to the fact without triggering immediate re-evaluation (unlike seen in modify), which can lead to inconsistent rule firing sequences. The explicit update($p) then signals to the rule engine to reconsider the fact only after all modifications are complete, ensuring it is in its final, consistent state. This ensures that all rules that depend on the updated fact($p) behave consistently, thus, eliminating the **timing-related ordering non-determinism** that can arise with modify($p). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
