ClassCastException on classes with the same FQCN after incremental build
Issue
We are using rules like the following
when
$p : Person ($types : types)
$type : String() from $types
("types" is a List field.)
Intermittently, we are experiencing the following ClassCastException at runtime:
16:07:09,011 WARN [org.drools.persistence.SingleSessionCommandService] (http-localhost.localdomain/127.0.0.1:8080-1) Could not commit session: java.lang.ClassCastException: org.kie.example.project1.Person cannot be cast to org.kie.example.project1.Person
at org.drools.base.org.kie.example.project1.Person1340276313$getTypes.getValue(Unknown Source)
at org.drools.core.base.ClassFieldReader.getValue(ClassFieldReader.java:91) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.rule.Declaration.getValue(Declaration.java:253) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.base.mvel.MVELCompilationUnit.updateFactory(MVELCompilationUnit.java:366) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.base.mvel.MVELCompilationUnit.getFactory(MVELCompilationUnit.java:297) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.base.dataproviders.MVELDataProvider.getResults(MVELDataProvider.java:117) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.phreak.PhreakFromNode.doLeftInserts(PhreakFromNode.java:105) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.phreak.PhreakFromNode.doNode(PhreakFromNode.java:67) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.phreak.RuleNetworkEvaluator.evalNode(RuleNetworkEvaluator.java:386) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:332) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:166) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:123) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.phreak.RuleExecutor.reEvaluateNetwork(RuleExecutor.java:194) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:73) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:978) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1292) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1294) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1281) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1260) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.runtime.rule.FireAllRulesCommand.execute(FireAllRulesCommand.java:111) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.runtime.rule.FireAllRulesCommand.execute(FireAllRulesCommand.java:36) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.persistence.SingleSessionCommandService$TransactionInterceptor.execute(SingleSessionCommandService.java:584) [drools-persistence-jpa-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:82) [drools-persistence-jpa-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:73) [drools-persistence-jpa-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:377) [drools-persistence-jpa-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.fireAllRules(CommandBasedStatefulKnowledgeSession.java:268) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.process.instance.event.listeners.TriggerRulesEventListener.afterRuleFlowGroupActivated(TriggerRulesEventListener.java:83) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.event.AgendaEventSupport.fireAfterRuleFlowGroupActivated(AgendaEventSupport.java:152) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.common.DefaultAgenda.activateRuleFlowGroup(DefaultAgenda.java:703) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.common.DefaultAgenda.activateRuleFlowGroup(DefaultAgenda.java:691) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.node.RuleSetNodeInstance.internalTrigger(RuleSetNodeInstance.java:87) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:366) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:325) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:61) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:57) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:366) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:325) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:73) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:44) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:236) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:439) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:208) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:217) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:225) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:1812) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.runtime.process.StartCorrelatedProcessCommand.execute(StartCorrelatedProcessCommand.java:146) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.runtime.process.StartCorrelatedProcessCommand.execute(StartCorrelatedProcessCommand.java:44) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.persistence.SingleSessionCommandService$TransactionInterceptor.execute(SingleSessionCommandService.java:584) [drools-persistence-jpa-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:82) [drools-persistence-jpa-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:73) [drools-persistence-jpa-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:377) [drools-persistence-jpa-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:529) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.kie.services.impl.ProcessServiceImpl.startProcess(ProcessServiceImpl.java:126) [jbpm-kie-services-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.services.cdi.impl.ProcessServiceCDIImpl$Proxy$_$$_WeldClientProxy.startProcess(ProcessServiceCDIImpl$Proxy$_$$_WeldClientProxy.java) [jbpm-services-cdi-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at org.jbpm.console.ng.bd.backend.server.KieSessionEntryPointImpl.startProcess(KieSessionEntryPointImpl.java:78) [jbpm-console-ng-business-domain-backend-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
at
...
After further testing, we noticed that this issue happens after a change to one of the rules was applied in business-central, and before the process that triggers the rule was invoked.
Environment
- Red Hat JBoss BPM Suite
- 6.2.0
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
