Re: [rules-users] Help debugging NPE

2009-06-25 Thread Edson Tirelli
   Oh, ok. Then it is shadow proxy related. :)

   Shadow proxies can't override final methods, and if they can't override
them, they can not safely prevent hashcode changes at unsafe points... and
that causes all kind of problems with hashmaps that are used internally.

   Drools 5 no longer requires shadow proxies. One more reason to move
forward. :)

   []s
   Edson

2009/6/25 Dirk Bergstrom 

> Edson Tirelli was heard to exclaim, On 06/24/09 15:43:
> > Drools 5 is mostly backward compatible with Drools 4. You don't need
> > to migrate to the new API, although it is recommended.
>
> Ahh, that's good to know.  You might want to mention that somewhere in the
> release notes, or on the website.  It would probably improve the adoption
> rate.
>
> > Anyway, I understand your concern. My wild wild guess is that the
> > memberOf operator is complaining about a null in that constraint.
>
> Nope, it's stranger than that.  The problem arose because I'd changed the
> hashCode() method of the base Record class to a final method.  I
> un-finalized
> the method, and the NPEs stopped happening.
>
> I don't understand how this could cause a problem, but I'm pretty sure it's
> a
> bug in Drools.  Once I get some free time, I'm going to test the code with
> 5.0,
> and I'll see if the bug shows up there.
>
> > 2009/6/24 Dirk Bergstrom mailto:d...@juniper.net>>
> >
> > Edson Tirelli was heard to exclaim, On 06/24/09 06:14:
> > >   The problem seems not related to shadow facts, but to
> constraint
> > > resolution and fact data extraction. It might be a bug or not...
> need
> > > more info.
> >
> > I've also seen the following stacktrace:
> >
> > java.lang.ArrayIndexOutOfBoundsException: 40440
> >at
> >
> org.drools.util.TupleIndexHashTable.toArray(TupleIndexHashTable.java:217)
> >at
> > org.drools.reteoo.CollectNode.retractObject(CollectNode.java:260)
> >at
> >
> org.drools.reteoo.SingleObjectSinkAdapter.propagateRetractObject(SingleObjectSinkAdapter.java:32)
> >at
> org.drools.reteoo.AlphaNode.retractObject(AlphaNode.java:164)
> >at
> >
> org.drools.reteoo.SingleObjectSinkAdapter.propagateRetractObject(SingleObjectSinkAdapter.java:32)
> >at
> org.drools.reteoo.AlphaNode.retractObject(AlphaNode.java:164)
> >at
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateRetractObject(CompositeObjectSinkAdapter.java:366)
> >at
> >
> org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:189)
> >at org.drools.reteoo.Rete.retractObject(Rete.java:215)
> >at
> >
> org.drools.reteoo.ReteooRuleBase.retractObject(ReteooRuleBase.java:211)
> >at
> >
> org.drools.reteoo.ReteooWorkingMemory.doRetract(ReteooWorkingMemory.java:79)
> >at
> >
> org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:1023)
> >at
> >
> org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:982)
> >at
> >
> net.juniper.dash.data.DataSource.reconcileAssertedRecords(DataSource.java:362)
> >
> > >   In any case, the offending rule is not the one you showed.
> The
> > > offending rule contains a double beta constraint in a join:
> >
> > I know it's not in that rule.  It must be in this one, since it's
> > the only one
> > that uses rli_nums:
> >
> > $npi : NPIRecord( )
> > $pr : PRRecord( npi == "", rli != "" )
> > $rli : RLIRecord( id memberOf $pr.rli_nums, npi_program ==
> > $npi.synopsis )
> >
> > >   Can you narrow it down? Did you tried with Drools 5.0.1?
> >
> > I haven't tried any of the 5.x series.  Is there a guide to
> > migrating my code
> > from 4.0 to 5.0?  I looked on the jboss site, the wiki, the blog,
> > and this
> > mailing list, but I didn't find anything.  I'm under a lot of time
> > pressure, and
> > changing to 5.0 doesn't look like a quick fix...
> >
> > > 2009/6/24 Dirk Bergstrom  >   > >>
> > >
> > > I'm running into an NPE using Drools 4.0.7, and I'm stumped by
> it
> > > (stacktrace
> > > below).  I made some changes to seemingly unrelated code, and
> this
> > > error started
> > > showing up.  It would help me to understand what's going on if
> > > someone could
> > > tell me roughly what's going on here.  Since the error is
> > thrown by
> > > generated
> > > code (in what I assume is a shadow proxy), I can't tell what
> the
> > > offending null
> > > pointer is.  I'm not even entirely sure what's triggering the
> bug
> > > (it happens
> > > half an hour into the run of big multi-threaded application
> with
> > > about 40K
> > > objects in the working memory).
> > >
> > > Is this ha

Re: [rules-users] Help debugging NPE

2009-06-25 Thread Dirk Bergstrom
Edson Tirelli was heard to exclaim, On 06/24/09 15:43:
> Drools 5 is mostly backward compatible with Drools 4. You don't need
> to migrate to the new API, although it is recommended.

Ahh, that's good to know.  You might want to mention that somewhere in the
release notes, or on the website.  It would probably improve the adoption rate.

> Anyway, I understand your concern. My wild wild guess is that the
> memberOf operator is complaining about a null in that constraint.

Nope, it's stranger than that.  The problem arose because I'd changed the
hashCode() method of the base Record class to a final method.  I un-finalized
the method, and the NPEs stopped happening.

I don't understand how this could cause a problem, but I'm pretty sure it's a
bug in Drools.  Once I get some free time, I'm going to test the code with 5.0,
and I'll see if the bug shows up there.

> 2009/6/24 Dirk Bergstrom mailto:d...@juniper.net>>
> 
> Edson Tirelli was heard to exclaim, On 06/24/09 06:14:
> >   The problem seems not related to shadow facts, but to constraint
> > resolution and fact data extraction. It might be a bug or not... need
> > more info.
> 
> I've also seen the following stacktrace:
> 
> java.lang.ArrayIndexOutOfBoundsException: 40440
>at
> org.drools.util.TupleIndexHashTable.toArray(TupleIndexHashTable.java:217)
>at
> org.drools.reteoo.CollectNode.retractObject(CollectNode.java:260)
>at
> 
> org.drools.reteoo.SingleObjectSinkAdapter.propagateRetractObject(SingleObjectSinkAdapter.java:32)
>at org.drools.reteoo.AlphaNode.retractObject(AlphaNode.java:164)
>at
> 
> org.drools.reteoo.SingleObjectSinkAdapter.propagateRetractObject(SingleObjectSinkAdapter.java:32)
>at org.drools.reteoo.AlphaNode.retractObject(AlphaNode.java:164)
>at
> 
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateRetractObject(CompositeObjectSinkAdapter.java:366)
>at
> org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:189)
>at org.drools.reteoo.Rete.retractObject(Rete.java:215)
>at
> org.drools.reteoo.ReteooRuleBase.retractObject(ReteooRuleBase.java:211)
>at
> 
> org.drools.reteoo.ReteooWorkingMemory.doRetract(ReteooWorkingMemory.java:79)
>at
> 
> org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:1023)
>at
> 
> org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:982)
>at
> 
> net.juniper.dash.data.DataSource.reconcileAssertedRecords(DataSource.java:362)
> 
> >   In any case, the offending rule is not the one you showed. The
> > offending rule contains a double beta constraint in a join:
> 
> I know it's not in that rule.  It must be in this one, since it's
> the only one
> that uses rli_nums:
> 
> $npi : NPIRecord( )
> $pr : PRRecord( npi == "", rli != "" )
> $rli : RLIRecord( id memberOf $pr.rli_nums, npi_program ==
> $npi.synopsis )
> 
> >   Can you narrow it down? Did you tried with Drools 5.0.1?
> 
> I haven't tried any of the 5.x series.  Is there a guide to
> migrating my code
> from 4.0 to 5.0?  I looked on the jboss site, the wiki, the blog,
> and this
> mailing list, but I didn't find anything.  I'm under a lot of time
> pressure, and
> changing to 5.0 doesn't look like a quick fix...
> 
> > 2009/6/24 Dirk Bergstrom    >>
> >
> > I'm running into an NPE using Drools 4.0.7, and I'm stumped by it
> > (stacktrace
> > below).  I made some changes to seemingly unrelated code, and this
> > error started
> > showing up.  It would help me to understand what's going on if
> > someone could
> > tell me roughly what's going on here.  Since the error is
> thrown by
> > generated
> > code (in what I assume is a shadow proxy), I can't tell what the
> > offending null
> > pointer is.  I'm not even entirely sure what's triggering the bug
> > (it happens
> > half an hour into the run of big multi-threaded application with
> > about 40K
> > objects in the working memory).
> >
> > Is this happening because:
> >
> > *) getRli_nums() in one of my PRRecord objects is returning a null
> > value?
> >
> > *) There is a null PRRecord object backing the shadow proxy?
> >
> > *) Some other thing is null?
> >
> > *) I'm running into a bug in Drools?
> >
> > I stuck in this rule:
> >
> > when
> >  $pr : PRRecord( rli_nums == null )
> > then
> >  System.out.println($pr.getId());
> > end
> >
> > And it didn't print anything, so I'm inclined

Re: [rules-users] Help debugging NPE

2009-06-24 Thread Edson Tirelli
Dirk

Drools 5 is mostly backward compatible with Drools 4. You don't need to
migrate to the new API, although it is recommended.

Anyway, I understand your concern. My wild wild guess is that the
memberOf operator is complaining about a null in that constraint. If that is
the case, it is a bug. I fixed some bugs like that in Drools 5 trunk:

https://jira.jboss.org/jira/browse/JBRULES-2102

[]s
Edson




2009/6/24 Dirk Bergstrom 

> Edson Tirelli was heard to exclaim, On 06/24/09 06:14:
> >   The problem seems not related to shadow facts, but to constraint
> > resolution and fact data extraction. It might be a bug or not... need
> > more info.
>
> I've also seen the following stacktrace:
>
> java.lang.ArrayIndexOutOfBoundsException: 40440
>at
> org.drools.util.TupleIndexHashTable.toArray(TupleIndexHashTable.java:217)
>at org.drools.reteoo.CollectNode.retractObject(CollectNode.java:260)
>at
>
> org.drools.reteoo.SingleObjectSinkAdapter.propagateRetractObject(SingleObjectSinkAdapter.java:32)
>at org.drools.reteoo.AlphaNode.retractObject(AlphaNode.java:164)
>at
>
> org.drools.reteoo.SingleObjectSinkAdapter.propagateRetractObject(SingleObjectSinkAdapter.java:32)
>at org.drools.reteoo.AlphaNode.retractObject(AlphaNode.java:164)
>at
>
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateRetractObject(CompositeObjectSinkAdapter.java:366)
> at
> org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:189)
>at org.drools.reteoo.Rete.retractObject(Rete.java:215)
>at
> org.drools.reteoo.ReteooRuleBase.retractObject(ReteooRuleBase.java:211)
>at
>
> org.drools.reteoo.ReteooWorkingMemory.doRetract(ReteooWorkingMemory.java:79)
>at
>
> org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:1023)
>at
>
> org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:982)
>at
>
> net.juniper.dash.data.DataSource.reconcileAssertedRecords(DataSource.java:362)
>
> >   In any case, the offending rule is not the one you showed. The
> > offending rule contains a double beta constraint in a join:
>
> I know it's not in that rule.  It must be in this one, since it's the only
> one
> that uses rli_nums:
>
> $npi : NPIRecord( )
> $pr : PRRecord( npi == "", rli != "" )
> $rli : RLIRecord( id memberOf $pr.rli_nums, npi_program == $npi.synopsis )
>
> >   Can you narrow it down? Did you tried with Drools 5.0.1?
>
> I haven't tried any of the 5.x series.  Is there a guide to migrating my
> code
> from 4.0 to 5.0?  I looked on the jboss site, the wiki, the blog, and this
> mailing list, but I didn't find anything.  I'm under a lot of time
> pressure, and
> changing to 5.0 doesn't look like a quick fix...
>
> > 2009/6/24 Dirk Bergstrom mailto:d...@juniper.net>>
> >
> > I'm running into an NPE using Drools 4.0.7, and I'm stumped by it
> > (stacktrace
> > below).  I made some changes to seemingly unrelated code, and this
> > error started
> > showing up.  It would help me to understand what's going on if
> > someone could
> > tell me roughly what's going on here.  Since the error is thrown by
> > generated
> > code (in what I assume is a shadow proxy), I can't tell what the
> > offending null
> > pointer is.  I'm not even entirely sure what's triggering the bug
> > (it happens
> > half an hour into the run of big multi-threaded application with
> > about 40K
> > objects in the working memory).
> >
> > Is this happening because:
> >
> > *) getRli_nums() in one of my PRRecord objects is returning a null
> > value?
> >
> > *) There is a null PRRecord object backing the shadow proxy?
> >
> > *) Some other thing is null?
> >
> > *) I'm running into a bug in Drools?
> >
> > I stuck in this rule:
> >
> > when
> >  $pr : PRRecord( rli_nums == null )
> > then
> >  System.out.println($pr.getId());
> > end
> >
> > And it didn't print anything, so I'm inclined to think that this is
> > not a simple
> > matter of something returning a null value...
> >
> > I'll be most appreciative of any help I can get.
> >
> > Here's the stacktrace:
> >
> > java.lang.NullPointerException
> >at
> >
> org.drools.base.net.juniper.dash.data.PRRecord13409648$getRli_nums.getValue(Unknown
> > Source)
> >at
> >
> org.drools.base.ClassFieldExtractor.getValue(ClassFieldExtractor.java:127)
> >at
> >
> org.drools.base.evaluators.BaseMemberOfEvaluator.evaluateCachedRight(BaseMemberOfEvaluator.java:45)
> >at
> >
> org.drools.rule.VariableRestriction.isAllowedCachedRight(VariableRestriction.java:89)
> >at
> >
> org.drools.rule.VariableConstraint.isAllowedCachedRight(VariableConstraint.java:81)
> >at
> >
> org.drools.common.DoubleBetaConstraints.isAllowedCachedRight(DoubleBetaConstraints.java:16

Re: [rules-users] Help debugging NPE

2009-06-24 Thread Dirk Bergstrom
Edson Tirelli was heard to exclaim, On 06/24/09 06:14:
>   The problem seems not related to shadow facts, but to constraint
> resolution and fact data extraction. It might be a bug or not... need
> more info.

I've also seen the following stacktrace:

java.lang.ArrayIndexOutOfBoundsException: 40440
at 
org.drools.util.TupleIndexHashTable.toArray(TupleIndexHashTable.java:217)
at org.drools.reteoo.CollectNode.retractObject(CollectNode.java:260)
at
org.drools.reteoo.SingleObjectSinkAdapter.propagateRetractObject(SingleObjectSinkAdapter.java:32)
at org.drools.reteoo.AlphaNode.retractObject(AlphaNode.java:164)
at
org.drools.reteoo.SingleObjectSinkAdapter.propagateRetractObject(SingleObjectSinkAdapter.java:32)
at org.drools.reteoo.AlphaNode.retractObject(AlphaNode.java:164)
at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateRetractObject(CompositeObjectSinkAdapter.java:366)
at 
org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:189)
at org.drools.reteoo.Rete.retractObject(Rete.java:215)
at 
org.drools.reteoo.ReteooRuleBase.retractObject(ReteooRuleBase.java:211)
at
org.drools.reteoo.ReteooWorkingMemory.doRetract(ReteooWorkingMemory.java:79)
at
org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:1023)
at
org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:982)
at
net.juniper.dash.data.DataSource.reconcileAssertedRecords(DataSource.java:362)

>   In any case, the offending rule is not the one you showed. The
> offending rule contains a double beta constraint in a join:

I know it's not in that rule.  It must be in this one, since it's the only one
that uses rli_nums:

$npi : NPIRecord( )
$pr : PRRecord( npi == "", rli != "" )
$rli : RLIRecord( id memberOf $pr.rli_nums, npi_program == $npi.synopsis )

>   Can you narrow it down? Did you tried with Drools 5.0.1?

I haven't tried any of the 5.x series.  Is there a guide to migrating my code
from 4.0 to 5.0?  I looked on the jboss site, the wiki, the blog, and this
mailing list, but I didn't find anything.  I'm under a lot of time pressure, and
changing to 5.0 doesn't look like a quick fix...

> 2009/6/24 Dirk Bergstrom mailto:d...@juniper.net>>
> 
> I'm running into an NPE using Drools 4.0.7, and I'm stumped by it
> (stacktrace
> below).  I made some changes to seemingly unrelated code, and this
> error started
> showing up.  It would help me to understand what's going on if
> someone could
> tell me roughly what's going on here.  Since the error is thrown by
> generated
> code (in what I assume is a shadow proxy), I can't tell what the
> offending null
> pointer is.  I'm not even entirely sure what's triggering the bug
> (it happens
> half an hour into the run of big multi-threaded application with
> about 40K
> objects in the working memory).
> 
> Is this happening because:
> 
> *) getRli_nums() in one of my PRRecord objects is returning a null
> value?
> 
> *) There is a null PRRecord object backing the shadow proxy?
> 
> *) Some other thing is null?
> 
> *) I'm running into a bug in Drools?
> 
> I stuck in this rule:
> 
> when
>  $pr : PRRecord( rli_nums == null )
> then
>  System.out.println($pr.getId());
> end
> 
> And it didn't print anything, so I'm inclined to think that this is
> not a simple
> matter of something returning a null value...
> 
> I'll be most appreciative of any help I can get.
> 
> Here's the stacktrace:
> 
> java.lang.NullPointerException
>at
> 
> org.drools.base.net.juniper.dash.data.PRRecord13409648$getRli_nums.getValue(Unknown
> Source)
>at
> org.drools.base.ClassFieldExtractor.getValue(ClassFieldExtractor.java:127)
>at
> 
> org.drools.base.evaluators.BaseMemberOfEvaluator.evaluateCachedRight(BaseMemberOfEvaluator.java:45)
>at
> 
> org.drools.rule.VariableRestriction.isAllowedCachedRight(VariableRestriction.java:89)
>at
> 
> org.drools.rule.VariableConstraint.isAllowedCachedRight(VariableConstraint.java:81)
>at
> 
> org.drools.common.DoubleBetaConstraints.isAllowedCachedRight(DoubleBetaConstraints.java:164)
>at org.drools.reteoo.JoinNode.retractObject(JoinNode.java:189)
>at
> 
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateRetractObject(CompositeObjectSinkAdapter.java:375)
>at
> org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:189)
>at org.drools.reteoo.Rete.retractObject(Rete.java:215)
>at
> org.drools.reteoo.ReteooRuleBase.retractObject(ReteooRuleBase.java:211)
>at
> 
> org.drools.reteoo.ReteooWorkingMemory.doRetract(ReteooWorkingMemory.java:79)
>at
> 
> org.drools.common.AbstractWorkingMemor

Re: [rules-users] Help debugging NPE

2009-06-24 Thread Edson Tirelli
  Dirk,

  The problem seems not related to shadow facts, but to constraint
resolution and fact data extraction. It might be a bug or not... need more
info.
  In any case, the offending rule is not the one you showed. The
offending rule contains a double beta constraint in a join:

org.drools.common.
>
> DoubleBetaConstraints.isAllowedCachedRight(DoubleBetaConstraints.java:164)
>at org.drools.reteoo.JoinNode.retractObject(JoinNode.java:189)


  Can you narrow it down? Did you tried with Drools 5.0.1?

  []s
  Edson

2009/6/24 Dirk Bergstrom 

> I'm running into an NPE using Drools 4.0.7, and I'm stumped by it
> (stacktrace
> below).  I made some changes to seemingly unrelated code, and this error
> started
> showing up.  It would help me to understand what's going on if someone
> could
> tell me roughly what's going on here.  Since the error is thrown by
> generated
> code (in what I assume is a shadow proxy), I can't tell what the offending
> null
> pointer is.  I'm not even entirely sure what's triggering the bug (it
> happens
> half an hour into the run of big multi-threaded application with about 40K
> objects in the working memory).
>
> Is this happening because:
>
> *) getRli_nums() in one of my PRRecord objects is returning a null value?
>
> *) There is a null PRRecord object backing the shadow proxy?
>
> *) Some other thing is null?
>
> *) I'm running into a bug in Drools?
>
> I stuck in this rule:
>
> when
>  $pr : PRRecord( rli_nums == null )
> then
>  System.out.println($pr.getId());
> end
>
> And it didn't print anything, so I'm inclined to think that this is not a
> simple
> matter of something returning a null value...
>
> I'll be most appreciative of any help I can get.
>
> Here's the stacktrace:
>
> java.lang.NullPointerException
>at
>
> org.drools.base.net.juniper.dash.data.PRRecord13409648$getRli_nums.getValue(Unknown
> Source)
>at
> org.drools.base.ClassFieldExtractor.getValue(ClassFieldExtractor.java:127)
>at
>
> org.drools.base.evaluators.BaseMemberOfEvaluator.evaluateCachedRight(BaseMemberOfEvaluator.java:45)
>at
>
> org.drools.rule.VariableRestriction.isAllowedCachedRight(VariableRestriction.java:89)
>at
>
> org.drools.rule.VariableConstraint.isAllowedCachedRight(VariableConstraint.java:81)
>at
>
> org.drools.common.DoubleBetaConstraints.isAllowedCachedRight(DoubleBetaConstraints.java:164)
>at org.drools.reteoo.JoinNode.retractObject(JoinNode.java:189)
>at
>
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateRetractObject(CompositeObjectSinkAdapter.java:375)
>at
> org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:189)
>at org.drools.reteoo.Rete.retractObject(Rete.java:215)
>at
> org.drools.reteoo.ReteooRuleBase.retractObject(ReteooRuleBase.java:211)
>at
>
> org.drools.reteoo.ReteooWorkingMemory.doRetract(ReteooWorkingMemory.java:79)
>at
>
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1250)
>at
>
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1203)
>at
>
> net.juniper.dash.data.DataSource.reconcileAssertedRecords(DataSource.java:409)
>
> --
> Dirk Bergstrom   d...@juniper.net
> _
> Juniper Networks Inc.,  Computer Geek
> Tel: 408.745.3182   Fax: 408.745.8905
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
 Edson Tirelli
 JBoss Drools Core Development
 JBoss by Red Hat @ www.jboss.com
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users