Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-3066

NPE in Drools org.drools.core.rule.SingleAccumulate.reverse(SingleAccumulate.java:124)

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Obsolete
    • Icon: Major Major
    • None
    • 7.4.1.Final
    • core engine
    • None
    • 2019 Week 26-28
    • 3
    • Hide

      See attachment. Place optaplanner 7.4.1.Final libs in ./lib/optaplanner-7.4.1 directory (attachment file size otherwise exceeded)

      Show
      See attachment. Place optaplanner 7.4.1.Final libs in ./lib/optaplanner-7.4.1 directory (attachment file size otherwise exceeded)
    • NEW
    • NEW
    • 3933475

      The rule

      rule "globalRequiredPredecessorAfterMe"
          when 
              $rpAll: Set(size>1) from accumulate (
              	Customer(Domicile != null, $rpAfterMe: requiredPredecessorsAfterMe);
              		collectSet($rpAfterMe)
              	)
          then
              scoreHolder.addMediumConstraintMatch(kcontext, - $rpAll.size()-1);
        end
      

      gives following NPE within the attached Optaplanner model:

      Exception in thread "main" java.lang.RuntimeException: java.lang.NullPointerException
      	at org.drools.core.rule.SingleAccumulate.reverse(SingleAccumulate.java:124)
      	at org.drools.core.phreak.PhreakAccumulateNode.removeMatch(PhreakAccumulateNode.java:796)
      	at org.drools.core.phreak.PhreakAccumulateNode.doRightUpdatesProcessChildren(PhreakAccumulateNode.java:517)
      	at org.drools.core.phreak.PhreakAccumulateNode.doRightUpdates(PhreakAccumulateNode.java:450)
      	at org.drools.core.phreak.PhreakAccumulateNode.doNode(PhreakAccumulateNode.java:76)
      	at org.drools.core.phreak.RuleNetworkEvaluator.switchOnDoBetaNode(RuleNetworkEvaluator.java:581)
      	at org.drools.core.phreak.RuleNetworkEvaluator.evalBetaNode(RuleNetworkEvaluator.java:552)
      	at org.drools.core.phreak.RuleNetworkEvaluator.evalNode(RuleNetworkEvaluator.java:379)
      	at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:339)
      	at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:175)
      	at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:133)
      	at org.drools.core.phreak.RuleExecutor.reEvaluateNetwork(RuleExecutor.java:212)
      	at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:87)
      	at org.drools.core.concurrent.AbstractRuleEvaluator.internalEvaluateAndFire(AbstractRuleEvaluator.java:34)
      	at org.drools.core.concurrent.SequentialRuleEvaluator.evaluateAndFire(SequentialRuleEvaluator.java:43)
      	at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:1067)
      	at org.drools.core.common.DefaultAgenda.internalFireAllRules(DefaultAgenda.java:1014)
      	at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1006)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1337)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1328)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1312)
      	at org.optaplanner.core.impl.score.director.drools.DroolsScoreDirector.calculateScore(DroolsScoreDirector.java:117)
      	at org.optaplanner.core.impl.score.director.AbstractScoreDirector.doAndProcessMove(AbstractScoreDirector.java:187)
      	at org.optaplanner.core.impl.constructionheuristic.decider.ConstructionHeuristicDecider.doMove(ConstructionHeuristicDecider.java:126)
      	at org.optaplanner.core.impl.constructionheuristic.decider.ConstructionHeuristicDecider.decideNextStep(ConstructionHeuristicDecider.java:100)
      	at org.optaplanner.core.impl.constructionheuristic.DefaultConstructionHeuristicPhase.solve(DefaultConstructionHeuristicPhase.java:74)
      	at org.optaplanner.core.impl.solver.AbstractSolver.runPhases(AbstractSolver.java:88)
      	at org.optaplanner.core.impl.solver.DefaultSolver.solve(DefaultSolver.java:191)
      	at canihazafischbroetchenplz.app.TestApp.main(TestApp.java:35)
      Caused by: java.lang.NullPointerException
      	at org.drools.core.base.accumulators.CollectSetAccumulateFunction.reverse(CollectSetAccumulateFunction.java:118)
      	at org.drools.core.base.accumulators.CollectSetAccumulateFunction.reverse(CollectSetAccumulateFunction.java:49)
      	at org.drools.core.base.accumulators.JavaAccumulatorFunctionExecutor.reverse(JavaAccumulatorFunctionExecutor.java:133)
      	at org.drools.core.rule.SingleAccumulate.reverse(SingleAccumulate.java:116)
      	... 28 more
      

            lmolteni@redhat.com Luca Molteni
            pharding_jira Philip Harding (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                Estimated:
                Original Estimate - 2 days
                2d
                Remaining:
                Remaining Estimate - 2 days
                2d
                Logged:
                Time Spent - Not Specified
                Not Specified