You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by "alissontadeuoliveira (via GitHub)" <gi...@apache.org> on 2026/05/21 20:26:01 UTC
[I] Issue: NoSuchMethodError after multiple executions when using dynamic rules (KieFileSystem) [incubator-kie-drools]
alissontadeuoliveira opened a new issue, #6711:
URL: https://github.com/apache/incubator-kie-drools/issues/6711
We are facing an intermittent runtime error when executing rules dynamically built in memory using KieFileSystem and KieContainer.
After a few successful executions, the application starts throwing the following exception:
reactor.core.scheduler.Schedulers : Scheduler worker in group main failed with an uncaught exception
_java.lang.NoSuchMethodError: 'void org.drools.mvel.EvaluatorHelper.initOperators(org.kie.api.runtime.rule.FactHandle, org.drools.core.reteoo.Tuple, org.drools.compiler.rule.builder.EvaluatorWrapper[])'
at ConditionEvaluatorbadf67d390ac4035ad664f412fc5e486.evaluate(Unknown Source)
at org.drools.mvel.MVELConstraint.evaluate(MVELConstraint.java:295)
at org.drools.mvel.MVELConstraint.isAllowed(MVELConstraint.java:245)
at org.drools.core.phreak.PhreakFromNode.isAllowed(PhreakFromNode.java:231)
at org.drools.core.phreak.PhreakFromNode.doLeftUpdates(PhreakFromNode.java:177)
at org.drools.core.phreak.PhreakFromNode.doNode(PhreakFromNode.java:68)
at org.drools.core.phreak.RuleNetworkEvaluatorImpl.evaluateNonBetaNonTerminalNode(RuleNetworkEvaluatorImpl.java:405)
at org.drools.core.phreak.RuleNetworkEvaluatorImpl.evaluateNonTerminalNode(RuleNetworkEvaluatorImpl.java:385)
at org.drools.core.phreak.RuleNetworkEvaluatorImpl.innerEval(RuleNetworkEvaluatorImpl.java:318)
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.sistema.executorderegras.adapter.drools.runtime.Sessao.executar(Sessao.java:36)
at br.sistema.executorderegras.adapter.drools.service.impl.ExecutorDeRegrasService.executarEmLote(ExecutorDeRegrasService.java:101)
at br.sistema.executorderegras.adapter.drools.service.impl.ExecutorDeRegrasService.lambda$executarRegras$7(ExecutorDeRegrasService.java:90)
at reactor.core.publisher.MonoCallable.call(MonoCallable.java:72)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:407)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmit(FluxFlatMap.java:547)
at reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:988)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)
at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2096)
at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:118)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152)
at reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.checkTerminated(FluxGroupBy.java:670)
at reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.drainRegular(FluxGroupBy.java:559)
at reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.drain(FluxGroupBy.java:652)
at reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.onComplete(FluxGroupBy.java:710)
at reactor.core.publisher.FluxGroupBy$GroupByMain.onComplete(FluxGroupBy.java:232)
at reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.checkTerminated(FluxGroupBy.java:670)
at reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.drainRegular(FluxGroupBy.java:559)
at reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.drain(FluxGroupBy.java:652)
at reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.onComplete(FluxGroupBy.java:710)
at reactor.core.publisher.FluxGroupBy$GroupByMain.onComplete(FluxGroupBy.java:232)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:850)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:612)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:592)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onComplete(FluxFlatMap.java:469)
at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:357)
at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83)
at reactor.core.publisher.Mono.subscribe(Mono.java:4576)
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onNext(MonoFlatMapMany.java:196)
at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2096)
at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:118)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152)
at reactor.core.publisher.FluxIterable$IterableSubscription.fastPath(FluxIterable.java:424)
at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:291)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171)
at reactor.core.publisher.Operators$BaseFluxToMonoOperator.request(Operators.java:2066)
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onSubscribe(MonoFlatMapMany.java:141)
at reactor.core.publisher.Operators$BaseFluxToMonoOperator.onSubscribe(Operators.java:2050)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:96)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83)
at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:68)
at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.run(FluxSubscribeOn.java:194)
at io.sentry.spring.jakarta.webflux.SentryScheduleHook.lambda$apply$0(SentryScheduleHook.java:22)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)_
The error happens during rule evaluation (not during build/initialization).
**Environment**
Java: 21
Spring Boot: 3.5.4
Reactor: (WebFlux / reactive stack)
Drools version: 10.2.0
Execution model: dynamic rule loading (no Maven KJARs)
We build rules dynamically in memory using KieFileSystem:
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId = ks.newReleaseId(
"groupId",
"name",
"1.0.0"
);
KieFileSystem kfs = ks.newKieFileSystem();
for (Rule rule : rules) {
kfs.write(
"src/main/resources/" + rule.getName() + ".drl",
rule.getContent()
);
}
kfs.generateAndWritePomXML(releaseId);
KieBuilder kb = ks.newKieBuilder(kfs).buildAll();
if (kb.getResults().hasMessages(Message.Level.ERROR)) {
throw new RuntimeException(kb.getResults().toString());
}
KieContainer container = ks.newKieContainer(releaseId);
--
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: commits-unsubscribe@kie.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org
Re: [I] Issue: NoSuchMethodError after multiple executions when using dynamic rules (KieFileSystem) [incubator-kie-drools]
Posted by "tkobayas (via GitHub)" <gi...@apache.org>.
tkobayas commented on issue #6711:
URL: https://github.com/apache/incubator-kie-drools/issues/6711#issuecomment-4542261394
Thank you for reporting. I'm working on a fix https://github.com/apache/incubator-kie-drools/pull/6730
In the meantime, a workaround would be:
A) Disable MVEL Jitting: Set this system property -> `System.setProperty("drools.jittingThreshold", "-1");`
or
B) Use executable-model: change from `KieBuilder kb = ks.newKieBuilder(kfs).buildAll();` to `KieBuilder kb = ks.newKieBuilder(kfs).buildAll(ExecutableModelProject.class);`
--
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: commits-unsubscribe@kie.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org
Re: [I] Issue: NoSuchMethodError after multiple executions when using dynamic rules (KieFileSystem) [incubator-kie-drools]
Posted by "yesamer (via GitHub)" <gi...@apache.org>.
yesamer closed issue #6711: Issue: NoSuchMethodError after multiple executions when using dynamic rules (KieFileSystem)
URL: https://github.com/apache/incubator-kie-drools/issues/6711
--
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: commits-unsubscribe@kie.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org