[jboss-jira] [JBoss JIRA] (JBRULES-3033) java.lang.ClassCastException when change rule condition and declarative facts/events are used

Mario Fusco (JIRA) jira-events at lists.jboss.org
Mon Aug 6 05:06:10 EDT 2012


     [ https://issues.jboss.org/browse/JBRULES-3033?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mario Fusco resolved JBRULES-3033.
----------------------------------

    Fix Version/s: 5.5.0.Beta1
       Resolution: Done

    
> java.lang.ClassCastException when change rule condition and declarative facts/events are used
> ---------------------------------------------------------------------------------------------
>
>                 Key: JBRULES-3033
>                 URL: https://issues.jboss.org/browse/JBRULES-3033
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: drools-core
>    Affects Versions: 5.1.1.FINAL
>            Reporter: Federico Weisse
>            Assignee: Mario Fusco
>             Fix For: 5.5.0.Beta1
>
>
> We have drl files where we declare events. we use declarative events (there is no java class AlertaPosManual)
> (like this)
> declare AlertaPosManual
> 	@role	(event)
> 	@expires(10s)
> 	idTerminal : java.lang.String
> end
> We use a StatefullSession for fusion cep and we need that changes in rules refresh the kBase in runtime. But when a rule condition changes this exception in throw
> Exception in thread "Thread-2" java.lang.ClassCastException: com.sample.ConsumoPostManual cannot be cast to com.sample.ConsumoPostManual
> 	at org.drools.base.com.sample.ConsumoPostManual17710704$getIdTerminal.getValue(Unknown Source)
> 	at org.drools.base.extractors.BaseObjectClassFieldReader.getHashCode(BaseObjectClassFieldReader.java:192)
> 	at org.drools.base.ClassFieldReader.getHashCode(ClassFieldReader.java:193)
> 	at org.drools.core.util.AbstractHashTable$SingleIndex.hashCodeOf(AbstractHashTable.java:582)
> 	at org.drools.core.util.RightTupleIndexHashTable.getOrCreate(RightTupleIndexHashTable.java:360)
> 	at org.drools.core.util.RightTupleIndexHashTable.add(RightTupleIndexHashTable.java:243)
> 	at org.drools.reteoo.AccumulateNode.assertObject(AccumulateNode.java:246)
> 	at org.drools.reteoo.ObjectTypeNode.updateSink(ObjectTypeNode.java:276)
> 	at org.drools.reteoo.PropagationQueuingNode.updateSink(PropagationQueuingNode.java:111)
> 	at org.drools.reteoo.BetaNode.attach(BetaNode.java:214)
> 	at org.drools.reteoo.builder.BuildUtils.attachNode(BuildUtils.java:151)
> 	at org.drools.reteoo.builder.CollectBuilder.build(CollectBuilder.java:114)
> 	at org.drools.reteoo.builder.PatternBuilder.attachPattern(PatternBuilder.java:111)
> 	at org.drools.reteoo.builder.PatternBuilder.build(PatternBuilder.java:72)
> 	at org.drools.reteoo.builder.GroupElementBuilder$AndBuilder.build(GroupElementBuilder.java:132)
> 	at org.drools.reteoo.builder.GroupElementBuilder.build(GroupElementBuilder.java:78)
> 	at org.drools.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:155)
> 	at org.drools.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:128)
> 	at org.drools.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:117)
> 	at org.drools.reteoo.ReteooRuleBase.addRule(ReteooRuleBase.java:428)
> 	at org.drools.common.AbstractRuleBase.addRule(AbstractRuleBase.java:721)
> 	at org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:545)
> 	at org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:445)
> 	at org.drools.reteoo.ReteooRuleBase.addPackage(ReteooRuleBase.java:452)
> 	at org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:937)
> 	at org.drools.agent.impl.KnowledgeAgentImpl.incrementalBuildResources(KnowledgeAgentImpl.java:821)
> 	at org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:586)
> 	at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:185)
> 	at org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector.run(KnowledgeAgentImpl.java:1106)
> 	at java.lang.Thread.run(Thread.java:619)
> I think that's because  the statefullSession has an instance of 
> com.sample.ConsumoPostManual (loaded with the classLoader 
> org.drools.rule.JavaDialectRuntimeData$PackageClassLoader at 1218b25) But when 
> the kBase is regenerated and the class com.sample.ConsumoPostManual to, the 
> classLoader  org.drools.rule.JavaDialectRuntimeData is recreated so there 
> are two versions of the class com.sample.ConsumoPostManual in differents 
> classLoader (one in the statefullSession and the other in the kBase)  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list