-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
None
-
NEW
-
NEW
A segment split during an incremental compilation as in the following test case
@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();
}
may cause the following ClassCastException during the subsequent network evaluation
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)