[jboss-jira] [JBoss JIRA] (DROOLS-1158) NullpointerException when trying to reuse KnowledgePackage into a new KnowledgeBase

Juan Carlos Garcia (JIRA) issues at jboss.org
Tue May 3 10:05:01 EDT 2016


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

Juan Carlos Garcia updated DROOLS-1158:
---------------------------------------
    Description: 
Having a set of DecisionTables which KnowledgePackages are cached in our application, after we detect a change in any of those XLS files, we build a KnowledgePackages from it, and then try to create a new KnowledgeBase with the new KnowledgePackages + the rest of the cached one that that were not modified, but it fails with a NPE internally in Drools (6.3.0 and 6.4.0)

This is not a problem for the drools version (6.0.1.Final) that we currently uses using in production.

After debugging and putting a breakpoint into the *MvelConstraint.java:619*,  it shows that it is trying to look for a packageName which hasn't being loaded yet in the new kbase (but belong to others XLS).

I have attached a project with a testcase that shows the problem, it has 2 DecisionTable which i had to cut down a little bit (from our real files) and removes some sensitive information (replacing some of text with FOO-BAR).

{code}
java.lang.NullPointerException
        at org.drools.core.rule.constraint.MvelConstraint.equals(MvelConstraint.java:619)
        at org.drools.core.reteoo.AlphaNode.internalEquals(AlphaNode.java:199)
        at org.drools.core.common.BaseNode.thisNodeEquals(BaseNode.java:194)
        at org.drools.core.reteoo.CompositeObjectSinkAdapter.getMatchingNode(CompositeObjectSinkAdapter.java:531)
        at org.drools.core.reteoo.builder.BuildUtils.attachNode(BuildUtils.java:121)
        at org.drools.core.reteoo.builder.PatternBuilder.buildAlphaNodeChain(PatternBuilder.java:332)
        at org.drools.core.reteoo.builder.PatternBuilder.attachAlphaNodes(PatternBuilder.java:313)
        at org.drools.core.reteoo.builder.PatternBuilder.attachPattern(PatternBuilder.java:130)
        at org.drools.core.reteoo.builder.PatternBuilder.build(PatternBuilder.java:78)
        at org.drools.core.reteoo.builder.GroupElementBuilder$AndBuilder.build(GroupElementBuilder.java:108)
        at org.drools.core.reteoo.builder.GroupElementBuilder.build(GroupElementBuilder.java:68)
        at org.drools.core.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:161)
        at org.drools.core.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:133)
        at org.drools.core.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:106)
        at org.drools.core.impl.KnowledgeBaseImpl.addRule(KnowledgeBaseImpl.java:1567)
        at org.drools.core.impl.KnowledgeBaseImpl.addRule(KnowledgeBaseImpl.java:1547)
        at org.drools.core.impl.KnowledgeBaseImpl.internalAddPackages(KnowledgeBaseImpl.java:920)
        at org.drools.core.impl.KnowledgeBaseImpl.access$000(KnowledgeBaseImpl.java:117)
        at org.drools.core.impl.KnowledgeBaseImpl$1.run(KnowledgeBaseImpl.java:708)
        at org.drools.core.impl.KnowledgeBaseImpl.enqueueModification(KnowledgeBaseImpl.java:716)
        at org.drools.core.impl.KnowledgeBaseImpl.addPackages(KnowledgeBaseImpl.java:705)
        at org.drools.core.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:273)
        at org.drools.impl.adapters.KnowledgeBaseAdapter.addKnowledgePackages(KnowledgeBaseAdapter.java:62)
        at bug.demo.BugReloadableDecisionTableTest.addRuleSetToKnowledgeBase(BugReloadableDecisionTableTest.java:63)
        at bug.demo.BugReloadableDecisionTableTest.testReuseKnowledgePackage(BugReloadableDecisionTableTest.java:53)
{code}

  was:
Having a set of DecisionTables which KnowledgePackage are cached in our application, after we detect a change in the filesystem, rebuild the new XLS file and try to create a new KnowledgeBase with the new KnowledgePackage + the rest of the cached packages that that were not modified,  it fails with a NPE internally in Drools (6.3.0 and 6.4.0)

This is not a problem in the drools version we are currently using 6.0.1.Final in production right now.

After debugging and putting a break point into the *MvelConstraint.java:619*,  it shows it is trying to look for a packageName which hasn't being loaded yet in the new kbase.

I have attached a project with a testcase that shows the problem, it has 2 DecisionTable which i had to cut down a little bit (from our real files) and removes some sensitive information (replacing some of text with FOO-BAR).

{code}
java.lang.NullPointerException
        at org.drools.core.rule.constraint.MvelConstraint.equals(MvelConstraint.java:619)
        at org.drools.core.reteoo.AlphaNode.internalEquals(AlphaNode.java:199)
        at org.drools.core.common.BaseNode.thisNodeEquals(BaseNode.java:194)
        at org.drools.core.reteoo.CompositeObjectSinkAdapter.getMatchingNode(CompositeObjectSinkAdapter.java:531)
        at org.drools.core.reteoo.builder.BuildUtils.attachNode(BuildUtils.java:121)
        at org.drools.core.reteoo.builder.PatternBuilder.buildAlphaNodeChain(PatternBuilder.java:332)
        at org.drools.core.reteoo.builder.PatternBuilder.attachAlphaNodes(PatternBuilder.java:313)
        at org.drools.core.reteoo.builder.PatternBuilder.attachPattern(PatternBuilder.java:130)
        at org.drools.core.reteoo.builder.PatternBuilder.build(PatternBuilder.java:78)
        at org.drools.core.reteoo.builder.GroupElementBuilder$AndBuilder.build(GroupElementBuilder.java:108)
        at org.drools.core.reteoo.builder.GroupElementBuilder.build(GroupElementBuilder.java:68)
        at org.drools.core.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:161)
        at org.drools.core.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:133)
        at org.drools.core.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:106)
        at org.drools.core.impl.KnowledgeBaseImpl.addRule(KnowledgeBaseImpl.java:1567)
        at org.drools.core.impl.KnowledgeBaseImpl.addRule(KnowledgeBaseImpl.java:1547)
        at org.drools.core.impl.KnowledgeBaseImpl.internalAddPackages(KnowledgeBaseImpl.java:920)
        at org.drools.core.impl.KnowledgeBaseImpl.access$000(KnowledgeBaseImpl.java:117)
        at org.drools.core.impl.KnowledgeBaseImpl$1.run(KnowledgeBaseImpl.java:708)
        at org.drools.core.impl.KnowledgeBaseImpl.enqueueModification(KnowledgeBaseImpl.java:716)
        at org.drools.core.impl.KnowledgeBaseImpl.addPackages(KnowledgeBaseImpl.java:705)
        at org.drools.core.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:273)
        at org.drools.impl.adapters.KnowledgeBaseAdapter.addKnowledgePackages(KnowledgeBaseAdapter.java:62)
        at bug.demo.BugReloadableDecisionTableTest.addRuleSetToKnowledgeBase(BugReloadableDecisionTableTest.java:63)
        at bug.demo.BugReloadableDecisionTableTest.testReuseKnowledgePackage(BugReloadableDecisionTableTest.java:53)
{code}



> NullpointerException when trying to reuse KnowledgePackage into a new KnowledgeBase
> -----------------------------------------------------------------------------------
>
>                 Key: DROOLS-1158
>                 URL: https://issues.jboss.org/browse/DROOLS-1158
>             Project: Drools
>          Issue Type: Bug
>    Affects Versions: 6.3.0.Final, 6.4.0.Final
>            Reporter: Juan Carlos Garcia
>            Assignee: Mark Proctor
>         Attachments: drools-reusepackage.tar
>
>
> Having a set of DecisionTables which KnowledgePackages are cached in our application, after we detect a change in any of those XLS files, we build a KnowledgePackages from it, and then try to create a new KnowledgeBase with the new KnowledgePackages + the rest of the cached one that that were not modified, but it fails with a NPE internally in Drools (6.3.0 and 6.4.0)
> This is not a problem for the drools version (6.0.1.Final) that we currently uses using in production.
> After debugging and putting a breakpoint into the *MvelConstraint.java:619*,  it shows that it is trying to look for a packageName which hasn't being loaded yet in the new kbase (but belong to others XLS).
> I have attached a project with a testcase that shows the problem, it has 2 DecisionTable which i had to cut down a little bit (from our real files) and removes some sensitive information (replacing some of text with FOO-BAR).
> {code}
> java.lang.NullPointerException
>         at org.drools.core.rule.constraint.MvelConstraint.equals(MvelConstraint.java:619)
>         at org.drools.core.reteoo.AlphaNode.internalEquals(AlphaNode.java:199)
>         at org.drools.core.common.BaseNode.thisNodeEquals(BaseNode.java:194)
>         at org.drools.core.reteoo.CompositeObjectSinkAdapter.getMatchingNode(CompositeObjectSinkAdapter.java:531)
>         at org.drools.core.reteoo.builder.BuildUtils.attachNode(BuildUtils.java:121)
>         at org.drools.core.reteoo.builder.PatternBuilder.buildAlphaNodeChain(PatternBuilder.java:332)
>         at org.drools.core.reteoo.builder.PatternBuilder.attachAlphaNodes(PatternBuilder.java:313)
>         at org.drools.core.reteoo.builder.PatternBuilder.attachPattern(PatternBuilder.java:130)
>         at org.drools.core.reteoo.builder.PatternBuilder.build(PatternBuilder.java:78)
>         at org.drools.core.reteoo.builder.GroupElementBuilder$AndBuilder.build(GroupElementBuilder.java:108)
>         at org.drools.core.reteoo.builder.GroupElementBuilder.build(GroupElementBuilder.java:68)
>         at org.drools.core.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:161)
>         at org.drools.core.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:133)
>         at org.drools.core.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:106)
>         at org.drools.core.impl.KnowledgeBaseImpl.addRule(KnowledgeBaseImpl.java:1567)
>         at org.drools.core.impl.KnowledgeBaseImpl.addRule(KnowledgeBaseImpl.java:1547)
>         at org.drools.core.impl.KnowledgeBaseImpl.internalAddPackages(KnowledgeBaseImpl.java:920)
>         at org.drools.core.impl.KnowledgeBaseImpl.access$000(KnowledgeBaseImpl.java:117)
>         at org.drools.core.impl.KnowledgeBaseImpl$1.run(KnowledgeBaseImpl.java:708)
>         at org.drools.core.impl.KnowledgeBaseImpl.enqueueModification(KnowledgeBaseImpl.java:716)
>         at org.drools.core.impl.KnowledgeBaseImpl.addPackages(KnowledgeBaseImpl.java:705)
>         at org.drools.core.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:273)
>         at org.drools.impl.adapters.KnowledgeBaseAdapter.addKnowledgePackages(KnowledgeBaseAdapter.java:62)
>         at bug.demo.BugReloadableDecisionTableTest.addRuleSetToKnowledgeBase(BugReloadableDecisionTableTest.java:63)
>         at bug.demo.BugReloadableDecisionTableTest.testReuseKnowledgePackage(BugReloadableDecisionTableTest.java:53)
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list