]
RH Bugzilla Integration commented on DROOLS-930:
------------------------------------------------
Marek Winkler <mwinkler(a)redhat.com> changed the Status of [bug
ClassCastException after segment split during incremental
compilation
---------------------------------------------------------------------
Key: DROOLS-930
URL:
https://issues.jboss.org/browse/DROOLS-930
Project: Drools
Issue Type: Bug
Reporter: Mario Fusco
Assignee: Mario Fusco
Fix For: 6.4.x
A segment split during an incremental compilation as in the following test case
{code}
@Test
public void testSegmentSplitOnIncrementalCompilation() throws Exception {
String drl =
"import " + Person.class.getCanonicalName() + "\n" +
"rule R1 when\n" +
" $s : String()" +
" Person( name == $s ) \n" +
"then\n" +
" System.out.println(\"Triggered: R1\");\n" +
"end\n" +
"rule R2 when\n" +
" $s : String()" +
" Person( name == $s ) \n" +
"then\n" +
" System.out.println(\"Triggered: R2\");\n" +
"end\n" +
"rule R3 when\n" +
" $s : String()" +
" Person( name != $s ) \n" +
"then\n" +
" System.out.println(\"Triggered: R3\");\n" +
"end\n";
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId1 = ks.newReleaseId("org.kie",
"test-upgrade", "1.1.1");
KieModule km = createAndDeployJar(ks, releaseId1);
KieContainer kc = ks.newKieContainer(km.getReleaseId());
KieSession ksession = kc.newKieSession();
kc.updateToVersion(releaseId1);
ksession.insert(new Person("John", 26));
ksession.insert( "John" );
ksession.fireAllRules();
ReleaseId releaseId2 = ks.newReleaseId("org.kie",
"test-upgrade", "1.1.2");
km = createAndDeployJar(ks, releaseId2, drl);
kc.updateToVersion(releaseId2);
ksession.fireAllRules();
}
{code}
may cause the following ClassCastException during the subsequent network evaluation
{code}
java.lang.ClassCastException: org.drools.core.reteoo.RuleTerminalNode cannot be cast to
org.drools.core.reteoo.LeftInputAdapterNode
at
org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:99)
at org.drools.core.phreak.RuleExecutor.reEvaluateNetwork(RuleExecutor.java:194)
at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:73)
at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:978)
at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1292)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1294)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1281)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1260)
at
org.drools.compiler.integrationtests.IncrementalCompilationTest.testSegmentSplit(IncrementalCompilationTest.java:2001)
{code}