[rules-dev] 3 issues with true modify, but PatientAdmissionScheduleApp does work

Edson Tirelli ed.tirelli at gmail.com
Thu Mar 11 18:50:23 EST 2010


    Geoffrey,

    Can you check again please (revision #32046)? Let me know if you find
further problems and thanks for testing that.

    Edson

2010/3/10 Geoffrey De Smet <ge0ffrey.spam at gmail.com>

> Edson,
>
> NQueens now works (thanks),
> but Examination [1] and SmartTravelingTournament still fail.
>
> To run Examination, just create a java application config with these
> settings:
> Main class:
> org.drools.planner.examples.examination.app.ExaminationBenchmarkApp
> VM parameters: -Xms256m -Xmx512m -server
> Program parameters: short
> Working directory: ...drools/drools-planner/drools-planner-examples
>
>
>
>
> [1] 2010-03-10 19:35:51,685 [main] INFO  Initialization time spend (196)
> for score (0hard/-8154soft). Updating best solution and best score.
> Exception in thread "main" java.lang.NullPointerException
>         at
> org.drools.reteoo.AccumulateNode.getFirstMatch(AccumulateNode.java:913)
>        at
> org.drools.reteoo.AccumulateNode.splitList(AccumulateNode.java:861)
>        at
>
> org.drools.reteoo.AccumulateNode.evaluateResultConstraints(AccumulateNode.java:581)
>        at
>
> org.drools.reteoo.AccumulateNode.removePreviousMatchesForRightTuple(AccumulateNode.java:845)
>        at
> org.drools.reteoo.AccumulateNode.modifyRightTuple(AccumulateNode.java:432)
>         at org.drools.reteoo.BetaNode.modifyObject(BetaNode.java:317)
>         at
>
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
>        at
>
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
>        at
> org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
>        at
> org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
>        at
>
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
>        at
>
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
>        at
>
> org.drools.planner.examples.examination.solver.move.ExaminationMoveHelper.moveRoom(ExaminationMoveHelper.java:24)
>        at
>
> org.drools.planner.examples.examination.solver.move.RoomChangeMove.doMove(RoomChangeMove.java:37)
>         at
>
> org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:119)
>        at
>
> org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
>        at
>
> org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
>        at
> org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
>        at
>
> org.drools.planner.benchmark.SolverBenchmarkSuite.benchmark(SolverBenchmarkSuite.java:196)
>        at
>
> org.drools.planner.benchmark.XmlSolverBenchmarker.benchmark(XmlSolverBenchmarker.java:72)
>        at
>
> org.drools.planner.examples.common.app.CommonBenchmarkApp.process(CommonBenchmarkApp.java:25)
>        at
>
> org.drools.planner.examples.examination.app.ExaminationBenchmarkApp.main(ExaminationBenchmarkApp.java:27)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
>
>
> [2] 2010-03-10 19:43:47,038 [main] INFO  Initialization time spend (26)
> for score (0hard/-93463soft). Updating best solution and best score.
> Exception in thread "main" java.lang.NullPointerException
>        at
>
> org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:198)
>        at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:304)
>        at org.drools.reteoo.BetaNode.modifyLeftTuple(BetaNode.java:336)
>        at
>
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateModifyObject(CompositeLeftTupleSinkAdapter.java:204)
>        at
>
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyObject(CompositeLeftTupleSinkAdapter.java:219)
>        at
>
> org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:154)
>        at
>
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
>        at
>
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
>        at
> org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
>        at
> org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
>        at
>
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
>        at
>
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
>        at
>
> org.drools.planner.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove.rotateList(MultipleMatchListRotateMove.java:59)
>        at
>
> org.drools.planner.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove.doMove(MultipleMatchListRotateMove.java:44)
>        at
>
> org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:117)
>        at
>
> org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
>        at
>
> org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
>        at
> org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
>        at
>
> org.drools.planner.benchmark.SolverBenchmarkSuite.benchmark(SolverBenchmarkSuite.java:196)
>        at
>
> org.drools.planner.benchmark.XmlSolverBenchmarker.benchmark(XmlSolverBenchmarker.java:72)
>        at
>
> org.drools.planner.examples.common.app.CommonBenchmarkApp.process(CommonBenchmarkApp.java:25)
>        at
>
> org.drools.planner.examples.travelingtournament.app.smart.SmartTravelingTournamentBenchmarkApp.main(SmartTravelingTournamentBenchmarkApp.java:28)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
>
>
> With kind regards,
> Geoffrey De Smet
>
>
> Edson Tirelli schreef:
> >
> >    Geoffrey,
> >
> >    All planner tests are green now (revision #32010).
> >
> >    Thanks,
> >       Edson
> >
> > 2010/3/8 Edson Tirelli <ed.tirelli at gmail.com <mailto:
> ed.tirelli at gmail.com>>
> >
> >
> >        Hey Geoffrey,
> >
> >        The fixes for accumulate are already there. It is no longer
> >     cloning the tuple memory and whenever possible, it uses indexing
> >     instead of full iteration.
> >
> >        Working on the NPE now.
> >
> >
> >        Edson
> >
> >     2010/3/7 Geoffrey De Smet <ge0ffrey.spam at gmail.com
> >     <mailto:ge0ffrey.spam at gmail.com>>
> >
> >         Edson,
> >
> >          > I believe fixed the infinite loop
> >          >> problem. Would you please take a look if it works for you?
> >
> >         Yes, it's no longer there, thanks :)
> >         Examination now suffers from the same NPE as the NQueens smoke
> test.
> >
> >         On one PAS testdata I actually had 5%, but on another PAS
> >         testdata only 1%.
> >
> >         I believe the cloning in accumulates fix will allow me to do the
> >         score
> >         calculation as it should be done (one rule instead of two rules)
> >         and also further help performance.
> >         I 'll run some experiments in that direction as soon as you give
> >         me the
> >         sign that cloning in accumulates has been fixed.
> >
> >         With kind regards,
> >         Geoffrey De Smet
> >
> >
> >         Edson Tirelli schreef:
> >          >
> >          >    Geoffrey,
> >          >
> >          >    I just committed some code that I believe fixed the
> >         infinite loop
> >          > problem. Would you please take a look if it works for you? I
> >         will take a
> >          > look at the other problems now... thanks for reporting that.
> >          >
> >          >    Regarding the performance, the main benefit of true modify
> >         is not a
> >          > straight gain on performance, but the reduction of the garbage
> >          > collection stress. Just to explain, the code now is actually
> more
> >          > complex, but the idea is that the algorithm pays off by
> >         instantiating a
> >          > lot less objects now, specially LeftTuples. I would not be
> >         surprised if
> >          > the 4% gain you see is due to less object
> instantiation+garbage
> >          > collection work. This is obviously dependent on the use case,
> >         but one
> >          > really interesting statistic to see would be if you can
> >         profile how many
> >          > instances of LeftTuple were created with the previous
> >         algorithm compared
> >          > to now.
> >          >
> >          >    Having said that, there are some performance improvements
> for
> >          > specific cases, like on accumulate that before would
> >         frequently clone
> >          > lists of tuples and iterate and now it avoids both the
> >         cloning and the
> >          > iteration on specific cases. For those cases, we expect gains
> >         of 30% on
> >          > the node, but that is just the node, not the whole kbase.
> >          >
> >          >    Also, as you mentioned, true modify opens the door for
> >         several other
> >          > optimizations that we will work on as soon as it is stable
> again.
> >          >
> >          >    Thanks,
> >          >       Edson
> >          >
> >          > 2010/3/7 Geoffrey De Smet <ge0ffrey.spam at gmail.com
> >         <mailto:ge0ffrey.spam at gmail.com>
> >          > <mailto:ge0ffrey.spam at gmail.com
> >         <mailto:ge0ffrey.spam at gmail.com>>>
> >          >
> >          >     Found another issue with the true modify changes: 3 of my
> >         examples don't
> >          >     work (NQueens, Travelingtournament, Examination), due to
> >         distinct
> >          >     causes.
> >          >
> >          >     PatientAdmissionScheduling does work and it's about 4%
> >         faster on first
> >          >     sight.
> >          >     It's a linear improvement, not an exponential improvement.
> >          >     Nothing world shocking (yet), but every little bit helps
> :)
> >          >     Edson and Mark believe that true modify allows for new
> >         optimization,
> >          >     which I believe might be an exponential improvement.
> >          >
> >          >     Once examination works I'll test if I can remove the TMS
> >         workaround I
> >          >     needed before.
> >          >     This will be a huge performance boost, but only for that
> >         specific
> >          >     example.
> >          >
> >          >
> >          >     Here's the bug list:
> >          >
> >          >     1) Infinite loop in
> >          >
> >         org.drools.core.util.LeftTupleList.get(LeftTupleList.java:102)
> >          >
> >          >     2) NPE in
> >          >
> >
> org.drools.core.util.RightTupleList.matches(RightTupleList.java:190)
> >          >     because this.first is null in
> >          >     return this.hashCode == tupleHashCode && this.index.equal(
> >          >     this.first.getFactHandle().getObject(),
> >          >
> >          >     tuple );
> >          >
> >          >     3) NPE in
> >          >
> >
> org.drools.reteoo.SingleLeftTupleSinkAdapter#propagateModifyChildLeftTuple,
> >          >     line 198:
> >          >     the leftTuple or the sink is null
> >          >            childLeftTuple.getLeftTupleSink().modifyLeftTuple(
> >          >     childLeftTuple,
> >          >
> >         context,
> >          >
> >          >     workingMemory );
> >          >
> >          >     Here are the stacktraces:
> >          >
> >          >     1)
> >          >
> >          >       1.
> >          >          To run:
> >          >       2.
> >          >          module: drools-planner-examples
> >          >       3.
> >          >          main class:
> >          >
> >
>  org.drools.planner.examples.examination.app.ExaminationBenchmarkApp
> >          >       4.
> >          >          VM params: -Xms256m -Xmx512m -server
> >          >       5.
> >          >          program params: short
> >          >       6.
> >          >          working dir:
> >          >
> >          >
> >
>  /home/ge0ffrey/projects/jboss/drools/drools-planner/drools-planner-examples
> >          >       7.
> >          >
> >          >       8.
> >          >
> >          >       9.
> >          >          More logging? open log4j-benchmark.xml and turn on
> >         debug logging
> >          >          for org.drools.planner
> >          >      10.
> >          >
> >          >      11.
> >          >
> >          >      12.
> >          >          2010-03-03 19:47:34,625 [main] INFO  Solving with
> >         random seed (0).
> >          >      13.
> >          >          2010-03-03 19:47:34,626 [main] DEBUG Solution is
> already
> >          >     initialized.
> >          >      14.
> >          >          2010-03-03 19:47:34,752 [main] INFO  Initialization
> >         time spend
> >          >          (129) for score (0hard/-8154soft). Updating best
> >         solution and best
> >          >          score.
> >          >      15.
> >          >          2010-03-03 19:47:34,948 [main] DEBUG     Move (489
> >         {D180|S47} @ 17
> >          >          {D210} + 4 {C77} => 25 {D210}) with score
> >         (-47hard/-8190soft) and
> >          >          acceptChance (1.0).
> >          >      16.
> >          >          2010-03-03 19:47:34,972 [main] DEBUG     Move (373
> >         {D180|S157} @
> >          >          23 {D210} + 0 {C260} => 16 {D210}) with score
> >         (-158hard/-8219soft)
> >          >          and acceptChance (1.0).
> >          >      17.
> >          >          2010-03-03 19:47:34,985 [main] DEBUG     Move (530
> >         {D120|S152} @
> >          >          16 {D210} + 0 {C260} => 39 {D210}) with score
> >         (-153hard/-8481soft)
> >          >          and acceptChance (1.0).
> >          >      18.
> >          >          2010-03-03 19:47:35,001 [main] DEBUG     Move (132
> >         {D120|S61} @ 53
> >          >          {D210} + 5 {C65} => 24 {D210}) with score
> >         (-64hard/-8243soft) and
> >          >          acceptChance (1.0).
> >          >      19.
> >          >          2010-03-03 19:47:35,011 [main] DEBUG     Move (553
> >         {D180|S169} @
> >          >          51 {D210} + 0 {C260} => 37 {D210}) with score
> >         (-168hard/-8323soft)
> >          >          and acceptChance (1.0).
> >          >      20.
> >          >          2010-03-03 19:52:03
> >          >      21.
> >          >          Full thread dump Java HotSpot(TM) Server VM
> >         (14.2-b01 mixed mode):
> >          >      22.
> >          >
> >          >      23.
> >          >          ...
> >          >      24.
> >          >
> >          >      25.
> >          >          "main" prio=10 tid=0x08b2b800 nid=0x1104 runnable
> >         [0xb6aa6000]
> >          >      26.
> >          >             java.lang.Thread.State: RUNNABLE
> >          >      27.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.common.DefaultFactHandle.hashCode(DefaultFactHandle.java:136)
> >          >      28.
> >          >                  at
> >         org.drools.reteoo.LeftTuple.hashCode(LeftTuple.java:445)
> >          >      29.
> >          >                  at
> >         org.drools.reteoo.LeftTuple.equals(LeftTuple.java:461)
> >          >      30.
> >          >                  at
> >          >
> >          org.drools.core.util.LeftTupleList.get(LeftTupleList.java:102)
> >          >      31.
> >          >                  at
> >          >
> >
>  org.drools.core.util.LeftTupleList.contains(LeftTupleList.java:96)
> >          >      32.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.reteoo.EvalConditionNode.modifyLeftTuple(EvalConditionNode.java:235)
> >          >      33.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:209)
> >          >      34.
> >          >                  at
> >          >
> >          org.drools.reteoo.JoinNode.modifyRightTuple(JoinNode.java:221)
> >          >      35.
> >          >                  at
> >          >     org.drools.reteoo.BetaNode.modifyObject(BetaNode.java:317)
> >          >      36.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
> >          >      37.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
> >          >      38.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
> >          >      39.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
> >          >      40.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
> >          >      41.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
> >          >      42.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.planner.examples.examination.solver.move.ExaminationMoveHelper.movePeriod(ExaminationMoveHelper.java:17)
> >          >      43.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.planner.examples.examination.solver.move.PeriodChangeMove.doMove(PeriodChangeMove.java:37)
> >          >      44.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:117)
> >          >      45.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
> >          >      46.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
> >          >      47.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
> >          >      48.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.planner.benchmark.SolverBenchmarkSuite.benchmark(SolverBenchmarkSuite.java:196)
> >          >      49.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.planner.benchmark.XmlSolverBenchmarker.benchmark(XmlSolverBenchmarker.java:72)
> >          >      50.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.planner.examples.common.app.CommonBenchmarkApp.process(CommonBenchmarkApp.java:25)
> >          >      51.
> >          >                  at
> >          >
> >          >
> >
>  org.drools.planner.examples.examination.app.ExaminationBenchmarkApp.main(ExaminationBenchmarkApp.java:27)
> >          >      52.
> >          >                  at
> >         sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >          >     Method)
> >          >      53.
> >          >                  at
> >          >
> >          >
> >
>  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >          >      54.
> >          >                  at
> >          >
> >          >
> >
>  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >          >      55.
> >          >                  at
> >         java.lang.reflect.Method.invoke(Method.java:597)
> >          >      56.
> >          >                  at
> >          >
> >          >
> >
>  com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
> >          >
> >          >
> >          >
> >          >     2) Run NQueensSmokeTest
> >          >
> >          >     java.lang.NullPointerException
> >          >        at
> >          >
> >
> org.drools.core.util.RightTupleList.matches(RightTupleList.java:190)
> >          >        at
> >          >
> >
> org.drools.core.util.RightTupleIndexHashTable.get(RightTupleIndexHashTable.java:301)
> >          >        at
> >          >
> >
> org.drools.core.util.RightTupleIndexHashTable.getFirst(RightTupleIndexHashTable.java:87)
> >          >        at
> >         org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:260)
> >          >        at
> >         org.drools.reteoo.BetaNode.modifyLeftTuple(BetaNode.java:336)
> >          >        at
> >          >
> >
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateModifyObject(CompositeLeftTupleSinkAdapter.java:204)
> >          >        at
> >          >
> >
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyObject(CompositeLeftTupleSinkAdapter.java:219)
> >          >        at
> >          >
> >
> org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:154)
> >          >        at
> >          >
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
> >          >        at
> >          >
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
> >          >        at
> >          >
> >
> org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
> >          >        at
> >          >
> >
> org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
> >          >        at
> >          >
> >
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
> >          >        at
> >          >
> >
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
> >          >        at
> >          >
> >
> org.drools.planner.examples.nqueens.solver.move.YChangeMove.doMove(YChangeMove.java:38)
> >          >        at
> >          >
> >
> org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:119)
> >          >        at
> >          >
> >
> org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
> >          >        at
> >          >
> >
> org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
> >          >        at
> >          >
> >
> org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
> >          >        at
> >          >
> >
> org.drools.planner.examples.nqueens.NQueensSmokeTest.testSmoke(NQueensSmokeTest.java:30)
> >          >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >         Method)
> >          >        at
> >          >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >          >        at
> >          >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >          >        at
> >          >
> >
> com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:108)
> >          >        at
> >          >
> >
> com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:42)
> >          >        at
> >          >
> >
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:165)
> >          >        at
> >          >
> >
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:60)
> >          >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >         Method)
> >          >        at
> >          >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >          >        at
> >          >
> >
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
> >          >
> >          >     3) Run SmartTravelingTournamentBenchmarkApp
> >          >
> >          >     Exception in thread "main" java.lang.NullPointerException
> >          >        at
> >          >
> >
> org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:198)
> >          >        at
> >         org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:304)
> >          >        at
> >         org.drools.reteoo.BetaNode.modifyLeftTuple(BetaNode.java:336)
> >          >        at
> >          >
> >
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateModifyObject(CompositeLeftTupleSinkAdapter.java:204)
> >          >        at
> >          >
> >
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyObject(CompositeLeftTupleSinkAdapter.java:219)
> >          >        at
> >          >
> >
> org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:154)
> >          >        at
> >          >
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
> >          >        at
> >          >
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
> >          >        at
> >          >
> >
> org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
> >          >        at
> >          >
> >
> org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
> >          >        at
> >          >
> >
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
> >          >        at
> >          >
> >
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
> >          >        at
> >          >
> >
> org.drools.planner.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove.rotateList(MultipleMatchListRotateMove.java:59)
> >          >        at
> >          >
> >
> org.drools.planner.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove.doMove(MultipleMatchListRotateMove.java:44)
> >          >        at
> >          >
> >
> org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:117)
> >          >        at
> >          >
> >
> org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
> >          >        at
> >          >
> >
> org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
> >          >        at
> >          >
> >
> org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
> >          >        at
> >          >
> >
> org.drools.planner.benchmark.SolverBenchmarkSuite.benchmark(SolverBenchmarkSuite.java:196)
> >          >        at
> >          >
> >
> org.drools.planner.benchmark.XmlSolverBenchmarker.benchmark(XmlSolverBenchmarker.java:72)
> >          >        at
> >          >
> >
> org.drools.planner.examples.common.app.CommonBenchmarkApp.process(CommonBenchmarkApp.java:25)
> >          >        at
> >          >
> >
> org.drools.planner.examples.travelingtournament.app.smart.SmartTravelingTournamentBenchmarkApp.main(SmartTravelingTournamentBenchmarkApp.java:28)
> >          >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >         Method)
> >          >        at
> >          >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >          >        at
> >          >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >          >        at java.lang.reflect.Method.invoke(Method.java:597)
> >          >        at
> >          >
> >
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
> >          >
> >          >     --
> >          >     With kind regards,
> >          >     Geoffrey De Smet
> >          >
> >          >     _______________________________________________
> >          >     rules-dev mailing list
> >          >     rules-dev at lists.jboss.org
> >         <mailto:rules-dev at lists.jboss.org>
> >         <mailto:rules-dev at lists.jboss.org
> >         <mailto:rules-dev at lists.jboss.org>>
> >          >     https://lists.jboss.org/mailman/listinfo/rules-dev
> >          >
> >          >
> >          >
> >          >
> >          > --
> >          >  Edson Tirelli
> >          >  JBoss Drools Core Development
> >          >  JBoss by Red Hat @ www.jboss.com <http://www.jboss.com>
> >         <http://www.jboss.com>
> >          >
> >          >
> >          >
> >
> ------------------------------------------------------------------------
> >          >
> >          > _______________________________________________
> >          > rules-dev mailing list
> >          > rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
> >          > https://lists.jboss.org/mailman/listinfo/rules-dev
> >
> >         _______________________________________________
> >         rules-dev mailing list
> >         rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
> >         https://lists.jboss.org/mailman/listinfo/rules-dev
> >
> >
> >
> >
> >     --
> >      Edson Tirelli
> >      JBoss Drools Core Development
> >      JBoss by Red Hat @ www.jboss.com <http://www.jboss.com>
> >
> >
> >
> >
> > --
> >  Edson Tirelli
> >  JBoss Drools Core Development
> >  JBoss by Red Hat @ www.jboss.com <http://www.jboss.com>
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > rules-dev mailing list
> > rules-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-dev
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>



-- 
 Edson Tirelli
 JBoss Drools Core Development
 JBoss by Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20100311/1fac3154/attachment-0001.html 


More information about the rules-dev mailing list