alissontadeuoliveira opened a new issue, #6846:
URL: https://github.com/apache/incubator-kie-drools/issues/6846

   ### Describe the bug
   
   We are facing an intermittent NullPointerException while executing rules in 
Drools 10.2.0.
   
   The exception occurs during `fireAllRules()` and seems to happen while 
Drools is removing dormant tuples after a sequence of cascading `update()` 
operations.
   
   No explicit `delete()` or `modify()` statements are used in the DRL files. 
The rules mainly update the same fact multiple times through chained rule 
activations.
   
   The exception is thrown inside Drools internals:
   
   `java.lang.NullPointerException: Cannot invoke 
"org.drools.core.util.DoubleLinkedEntry.setNext(org.drools.core.util.SingleLinkedEntry)"
 because the return value of 
"org.drools.core.util.DoubleLinkedEntry.getPrevious()" is null
           at org.drools.core.util.LinkedList.remove(LinkedList.java:178)
           at 
org.drools.core.phreak.RuleExecutor.removeDormantTuple(RuleExecutor.java:314)
           at 
org.drools.core.phreak.PhreakRuleTerminalNode.doLeftDelete(PhreakRuleTerminalNode.java:281)
           at 
org.drools.core.phreak.PhreakRuleTerminalNode.doLeftDeletes(PhreakRuleTerminalNode.java:265)
           at 
org.drools.core.phreak.PhreakRuleTerminalNode.doNode(PhreakRuleTerminalNode.java:59)
           at 
org.drools.core.phreak.RuleNetworkEvaluatorImpl.evaluateEndNode(RuleNetworkEvaluatorImpl.java:345)
           at 
org.drools.core.phreak.RuleNetworkEvaluatorImpl.innerEval(RuleNetworkEvaluatorImpl.java:312)
           at 
org.drools.core.phreak.RuleNetworkEvaluatorImpl.outerEval(RuleNetworkEvaluatorImpl.java:250)
           at 
org.drools.core.phreak.RuleNetworkEvaluatorImpl.evaluateNetwork(RuleNetworkEvaluatorImpl.java:142)
           at 
org.drools.core.phreak.RuleExecutor.evaluateNetwork(RuleExecutor.java:225)
           at 
org.drools.kiesession.agenda.DefaultAgenda.evaluateEagerList(DefaultAgenda.java:499)
           at 
org.drools.core.phreak.RuleExecutor.ruleWithHigherSalienceActivated(RuleExecutor.java:272)
           at org.drools.core.phreak.RuleExecutor.fire(RuleExecutor.java:169)
           at 
org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:91)
           at 
org.drools.core.concurrent.AbstractGroupEvaluator.evaluateAndFire(AbstractGroupEvaluator.java:53)
           at 
org.drools.kiesession.agenda.DefaultAgenda.fireLoop(DefaultAgenda.java:616)
           at 
org.drools.kiesession.agenda.DefaultAgenda.internalFireAllRules(DefaultAgenda.java:569)
           at 
org.drools.kiesession.agenda.DefaultAgenda.fireAllRules(DefaultAgenda.java:561)
           at 
org.drools.kiesession.session.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1110)
           at 
org.drools.kiesession.session.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1101)
           at 
org.drools.kiesession.session.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1089)
           at 
br.dominio.executorderegras.adapter.drools.runtime.Sessao.executar(Sessao.java:30)
           at 
br.dominio.executorderegras.adapter.drools.runtime.Sessao.executar(Sessao.java:45)
           at 
br.dominio.executorderegras.adapter.drools.service.impl.ExecutorDeRegrasEnriquecimentoService.lambda$executarAssunto$1(ExecutorDeRegrasEnriquecimentoService.java:122)
           at reactor.core.publisher.MonoCallable.call(MonoCallable.java:69)
           at 
reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:228)
           at 
io.sentry.spring7.webflux.SentryScheduleHook.lambda$apply$0(SentryScheduleHook.java:41)
           at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:72)
           at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
           at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
           at 
java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:309)
           at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
           at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
           at java.base/java.lang.Thread.run(Thread.java:1474)`
   
   **Environment**
   
   Drools version: 10.2.0
   JVM: Java 24
   Execution model: Stateful KieSession
   Session source: KieSessionsPool
   Rules use `update()`
   No use of `delete()`
   No use of `modify()`
   No use of `insertLogical()`
   
   ### Expected behavior
   
   Drools should safely cancel and recreate activations when facts are updated, 
without producing an inconsistent internal state.
   
   ### Actual behavior
   
   _No response_
   
   ### How to Reproduce?
   
   _No response_
   
   ### Output of `uname -a` or `ver`
   
   _No response_
   
   ### Output of `java -version`
   
   _No response_
   
   ### GraalVM version (if different from Java)
   
   _No response_
   
   ### Kogito version or git rev (or at least Quarkus version if you are using 
Kogito via Quarkus platform BOM)
   
   _No response_
   
   ### Build tool (ie. output of `mvnw --version` or `gradlew --version`)
   
   _No response_
   
   ### Additional information
   
   _No response_


-- 
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]

Reply via email to