[rules-users] 5.6.0.CR1 gives a NullPointerException in after evaluator

Davide Sottara dsotty at gmail.com
Mon Nov 18 16:00:11 EST 2013


Jonathan,
Drools 5.5 was never meant to be multi-threaded. 5.6 tries to put a few
patches here and there, 6.0 is going in that direction and 6.1 will
hopefully solve the problem.
Thanks for the hint to the "internal hash table", it may give us ideas
on what to test next. However, if you or anyone could ever reproduce the
issue and submit a test
case that would be REALLY appreciated
Thanks
Davide

On 11/18/2013 12:04 PM, Jonathan Knehr wrote:
> In the past I've tried to reproduce a similar issue.
>
> Don't know if this will help, but I could not reproduce the NPEs without running a large amount of events into the rule engine. A small unit test never reproduced these issues for me, which made it harder. Not sure about this issue in particular, but other ones I've seen seem to be related to the internal hash table eventually misplacing objects. This created all sorts of odd symptoms, namely NPEs all over the place in random drools classes. But I think all of these are just symptoms of the same bug at the core level somewhere. They all are related IMO.
>
> Sent from my iPhone
>
>> On Nov 18, 2013, at 9:48 AM, Davide Sottara <dsotty at gmail.com> wrote:
>>
>> I tried to reproduce the problem, with no success.
>> Could you please create a self-contained unit test?
>> If confirmed, I'll fix the problem as soon as possible
>> Thanks
>> Davide
>>
>>> On 11/14/2013 04:48 AM, abr wrote:
>>> Hi everyone,
>>>
>>> I tried to switch from 5.5.0.Final to 5.6.0.CR1 and got a null pointer
>>> exception in the evaluation of the after evaluator.
>>> (Exact method is:
>>> /org.drools.base.evaluators.AfterEvaluatorDefinition.AfterEvaluator.evaluate(InternalWorkingMemory,
>>> InternalReadAccessor, InternalFactHandle, InternalReadAccessor,
>>> InternalFactHandle)/ )
>>>
>>> When debugging, the exception occurs at the very first line of the method,
>>> in:
>>> /    if ( extractor1.isNullValue( workingMemory, handle1.getObject() ) || 
>>>            extractor2.isNullValue( workingMemory, handle2.getObject() ) ) {
>>>        return false;
>>>    }
>>> /
>>> The cause of the exception is that handle1 is null.
>>>
>>> The rule where the exception occurs looks like:
>>> /    MyFact(
>>>        fromdate before[ 0d ] $min,
>>>        ( todate == null || todate after[ 0d ] $max ) )
>>> /
>>>
>>> When the exception occurs, /MyFact.fromdate/ is not null, /$min/ is not
>>> null, /MyFact.todate/ is null, /$max/ is not null.
>>> In AfterEvaluator.evaluate : /extractor1/ refers to /MyFact.todate/,
>>> /extractor2/ refers to /$max/, /handle1/ is null, /handle2/ refers to the
>>> fact including the attribute to which /$max/ variable is bound to.
>>>
>>> Of course, this worked fine in 5.5.0.Final.
>>> I couldn't test this out in Drools 6.0.0.CR5 because I have dependencies to
>>> drools-spring JAR that does not exist anymore in 6.0.0.CR5.
>>>
>>> Is it simple to fix this problem?
>>>
>>> Thanks in advance.
>>>
>>> Best,
>>> Alexis
>>>
>>>
>>>
>>> --
>>> View this message in context: http://drools.46999.n3.nabble.com/5-6-0-CR1-gives-a-NullPointerException-in-after-evaluator-tp4026780.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
> _______________________________________________
> 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