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