[jboss-jira] [JBoss JIRA] (DROOLS-1155) ClassCastException after deserialization of kiebase

Mariano Nicolas De Maio (JIRA) issues at jboss.org
Thu Jun 2 13:03:00 EDT 2016


    [ https://issues.jboss.org/browse/DROOLS-1155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13247203#comment-13247203 ] 

Mariano Nicolas De Maio commented on DROOLS-1155:
-------------------------------------------------

Stack trace obtained after serialized kie base is deserialized, a KieSession is created, and used exactly the same way as before:

testSerializedKbase(org.drools.issue.test.RuleEngineTest)  Time elapsed: 7.548 sec  <<< ERROR!
java.lang.RuntimeException: inMonthDayInterval($evalTime, 9, 1, 4, 1) : java.lang.ClassCastException: org.drools.core.reteoo.InitialFactImpl cannot be cast to org.drools.issue.trait.EvalTime
	at org.drools.core.rule.EvalCondition.isAllowed(EvalCondition.java:123)
	at org.drools.core.phreak.PhreakEvalNode.doLeftInserts(PhreakEvalNode.java:70)
	at org.drools.core.phreak.PhreakEvalNode.doNode(PhreakEvalNode.java:54)
	at org.drools.core.phreak.RuleNetworkEvaluator.evalNode(RuleNetworkEvaluator.java:349)
	at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:301)
	at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:136)
	at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:94)
	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:1007)
	at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:1350)
	at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1288)
	at org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1333)
	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1324)
	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1305)
	at org.drools.core.command.runtime.rule.FireAllRulesCommand.execute(FireAllRulesCommand.java:111)
	at org.drools.core.command.runtime.rule.FireAllRulesCommand.execute(FireAllRulesCommand.java:36)
	at org.drools.core.command.runtime.BatchExecutionCommandImpl.execute(BatchExecutionCommandImpl.java:136)
	at org.drools.core.command.runtime.BatchExecutionCommandImpl.execute(BatchExecutionCommandImpl.java:51)
	at org.drools.core.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:220)
	at org.drools.issue.test.RuleEngineTest.executeRules(RuleEngineTest.java:120)
	at org.drools.issue.test.RuleEngineTest.testSerializedKbase(RuleEngineTest.java:93)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.ClassCastException: org.drools.core.reteoo.InitialFactImpl cannot be cast to org.drools.issue.trait.EvalTime
	at org.drools.base.org.drools.issue.trait.EvalTime1463823265$getEvalTime.getValue(Unknown Source)
	at org.drools.core.base.ClassFieldReader.getValue(ClassFieldReader.java:91)
	at org.drools.core.rule.Declaration.getValue(Declaration.java:214)
	at org.drools.core.base.mvel.MVELCompilationUnit.updateFactory(MVELCompilationUnit.java:389)
	at org.drools.core.base.mvel.MVELCompilationUnit.updateFactory(MVELCompilationUnit.java:333)
	at org.drools.core.base.mvel.MVELEvalExpression.evaluate(MVELEvalExpression.java:88)
	at org.drools.core.rule.EvalCondition.isAllowed(EvalCondition.java:118)
	... 50 more



> ClassCastException after deserialization of kiebase
> ---------------------------------------------------
>
>                 Key: DROOLS-1155
>                 URL: https://issues.jboss.org/browse/DROOLS-1155
>             Project: Drools
>          Issue Type: Bug
>    Affects Versions: 6.3.0.Final, 7.0.0.Beta1
>            Reporter: Mariano Nicolas De Maio
>            Assignee: Mario Fusco
>         Attachments: issue-repro.tar.gz
>
>
> After the fix for issue DROOLS-1123, I was able to follow deserialize the kie base correctly. However, after deserialization, the kie sessions do not behave in the same way. The attached project has a reproduction case for the difference in behavior



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list