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

nxv nxvanderlinden at gmail.com
Mon Jan 13 16:14:16 EST 2014


The problem is the same as reported by abr.  I work with abr on the project
:)  As he could not reproduce the bug, I just removed lines of code as much
as possible to keep only the essentials.  Here is a unit test: 
Drools-after.zip
<http://drools.46999.n3.nabble.com/file/n4027676/Drools-after.zip>  


Davide Sottara wrote
> This is unlikely to be the same exception that started the initial
> thread, but a problem nevertheless.. :(
> could you create a self-contained test case and submit it?
> Thanks
> Davide
> 
> On 01/13/2014 08:05 AM, Mark Proctor wrote:
>> That was recreated on 5.6.0.CR1 ? The 5.6 ship has sailed now :( and
>> currently there are no plans for 5.7 any time soon. We should focus on
>> making sure this is fixed in 6.x.
>>
>> Mark
>> On 12 Jan 2014, at 19:21, nxv &lt;

> nxvanderlinden@

> &gt; &lt;mailto:

> nxvanderlinden@

> &gt;> wrote:
>>
>>> Hello,
>>>
>>> I'm able to reproduce this issue with a KB containing only 1 rule.
>>>
>>> rule "Qualification##ToControl"
>>> salience 50
>>>    when
>>> $p: AccessRegisterSnapshot(
>>> $effDt: effectivedate )
>>> $dpo: DeliveryPoint()
>>> $gCfg: GeneralConfig(
>>> ( todate == null || 
>>>   ( todate after[ 0d ] $effDt &&
>>>     todate after[ 1ms ] fromdate ) ) )
>>> from $dpo.generalConfigs
>>>    then
>>>    
>>> end
>>>
>>> This rule worked under drools 5.5.0.Final.  
>>>
>>> Caused by: java.lang.NullPointerException at
>>> org.drools.base.evaluators.AfterEvaluatorDefinition$AfterEvaluator.evaluate(AfterEvaluatorDefinition.java:347)
>>> at org.drools.base.EvaluatorWrapper.evaluate(EvaluatorWrapper.java:99)
>>>
>>>
>>>
>>>
>>> Davide Sottara 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.





--
View this message in context: http://drools.46999.n3.nabble.com/5-6-0-CR1-gives-a-NullPointerException-in-after-evaluator-tp4026780p4027676.html
Sent from the Drools: User forum mailing list archive at Nabble.com.


More information about the rules-users mailing list