[rules-users] java.lang.ClassCastException: org.drools.reteoo.BetaMemory cannot be cast to org.drools.reteoo.AlphaNode$AlphaMemory

Davide Sottara dsotty at gmail.com
Mon May 6 14:40:58 EDT 2013


The Stateless Session wraps a Stateful one.. it would be extremely
useful if you could narrow down your initial KB and your changeset
to the minimal set of rules that causes this corruption. There could
be a bug in the incremental construction process.
Thanks
Davide

On 05/06/2013 11:33 AM, Wolfgang Laun wrote:
> Sorry, but I doubt that anyone can benefit from this somewhat
> obscure description of a use case - but thanks for trying.
> -W
>
> On 06/05/2013, dcrissman <dcrissman at redhat.com> wrote:
>> While working on a sanitized version of the code, I discovered my issue.
>>
>> I am using a StatefulKnowledgeSession essentially statelessly. I am doing
>> this because in the past I have found StatefulKnowledgeSession to be more
>> feature rich. Regardless, each execution created a new
>> StatelessKnowledgeSession instance which is built from a single instance of
>> a KnowledgeBase. During the setup for each run, I was adding my change_set
>> to that KnowledgeBase, causing the error I was getting. I'd like to think
>> that my mistake could be recycled and benefit someone else in the future.
>>
>> Davide - Thank you for your time. Sorry that this turned out to be user
>> error.
>>
>> -Dennis
>>
>>
>> Davide Sottara wrote
>>> Could you post **at least** the unit test throwing the exception,
>>> the one that "enables" it and the code you are using to run them?
>>> This may be yet another blocker for 5.6, so I'd like to investigate it
>>> as soon as possible
>>> Thanks!
>>> Davide
>>>
>>> On 05/02/2013 07:20 AM, dcrissman wrote:
>>>> Yes, I am getting this exception (sadly, not something that I am just
>>>> worried
>>>> about).
>>>>
>>>> I am checking for rule complication errors before running the rules, and
>>>> no
>>>> errors are being given.
>>>>
>>>> I am not dynamically adding or removing rules once I have my knowledge
>>>> base
>>>> setup, it does not change though the duration of the run.
>>>>
>>>> I am using a StatefulKnowledgeSession, and I make sure that after each
>>>> run
>>>> that I am calling dispose in a finally block. So shouldn't be any
>>>> strange
>>>> memory issues.
>>>>
>>>> To add to the original description, I am getting these exceptions in my
>>>> unit
>>>> tests. There is one unit test suite that when disabled the exception
>>>> goes
>>>> away, but when enabled the exceptions happen in other suites. Which of
>>>> course is odd and led me to believe that there is a problem with the
>>>> unit
>>>> tests (which is still not ruled out). But the suites are using different
>>>> sessions, same rules, but totally different instances of everything.
>>>>
>>>> The only thing I am doing that may be a little funny is consolidating a
>>>> collection of objects into one then retracting the collection, but when
>>>> I
>>>> comment out this rule I still am getting this exception. Aside from this
>>>> one
>>>> case, I am not doing anything crazy.
>>>>
>>>> [code]
>>>> //ArrayList provided by drools seems to dynamically adjust with the
>>>> retractions, this safeguards us against that.
>>>> ArrayList safetyArr = new ArrayList($attrs);
>>>>
>>>> ArrayList values = new ArrayList();
>>>> for (int i=0; i < safetyArr.size(); i++){
>>>> 	Attribute attr = ((Attribute) safetyArr.get(i));
>>>> 	values.add(attr.getValue());
>>>> 	retract(attr);
>>>> }
>>>>
>>>> insert(newAttribute($redHatName, StringUtils.join(values, ",")));
>>>> [/code]
>>>>
>>>> Any other thoughts you may have would be appreciated.
>>>>
>>>> Thanks!
>>>>
>>>>
>>>> Davide Sottara wrote
>>>>> The original thread was for a bug in 5.0.x, fixed in 5.1, but it would
>>>>> be
>>>>> a
>>>>> very serious issue in 5.5. It basically means that the local memory of
>>>>> a
>>>>> beta node has been assigned to an alpha node, or that the wrong memory
>>>>> had
>>>>> been retrieved. In any case, the rete is broken: wrong facts or types
>>>>> would
>>>>> be joined in a different order or way than stated by the rules.
>>>>>
>>>>> Is this something you're experiencing , or just worried that it may
>>>>> happen?
>>>>>
>>>>> Causes could be an invalid rule in the first place (running the engine
>>>>> without checking for compilation errors), a bug in the construction
>>>>> process
>>>>> (unlikely, unless the rule is a very rare edge case), or a complex
>>>>> scenario
>>>>> where you add and remove rules dynamically from a knowledge base.
>>>>> On May 1, 2013 2:25 PM, "dcrissman" &lt;
>>>>> dcrissman@
>>>>> &gt; wrote:
>>>>>
>>>>>> Could you explain what you mean by rete corruption? I am familiar with
>>>>>> rete,
>>>>>> but hardly an expert. I am not really doing anything too complicated,
>>>>>> I
>>>>>> guess some runtime inserts and retracts.
>>>>>>
>>>>>> I tried 6.0.0.Beta2, but that has more api changes then I am prepared
>>>>>> to
>>>>>> handle, I'll wait until the Final version.
>>>>>>
>>>>>> As for 5.6.0-SNAPSHOT, I am having trouble pulling it down. I will
>>>>>> pick
>>>>>> that
>>>>>> up tomorrow.
>>>>>>
>>>>>> In the meantime, any clarification to the rete question would be
>>>>>> appreciated.
>>>>>>
>>>>>> Thanks,
>>>>>> Dennis
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> View this message in context:
>>>>>> http://drools.46999.n3.nabble.com/java-lang-ClassCastException-org-drools-reteoo-BetaMemory-cannot-be-cast-to-org-drools-reteoo-AlphaNy-tp4023610p4023612.html
>>>>>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>>>>>> _______________________________________________
>>>>>> rules-users mailing list
>>>>>>
>>>>> rules-users at .jboss
>>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>
>>>>> _______________________________________________
>>>>> rules-users mailing list
>>>>> rules-users at .jboss
>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://drools.46999.n3.nabble.com/java-lang-ClassCastException-org-drools-reteoo-BetaMemory-cannot-be-cast-to-org-drools-reteoo-AlphaNy-tp4023610p4023630.html
>>>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>>>> _______________________________________________
>>>> rules-users mailing list
>>>>
>>> rules-users at .jboss
>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at .jboss
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>>
>>
>> --
>> View this message in context:
>> http://drools.46999.n3.nabble.com/java-lang-ClassCastException-org-drools-reteoo-BetaMemory-cannot-be-cast-to-org-drools-reteoo-AlphaNy-tp4023610p4023693.html
>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



More information about the rules-users mailing list