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@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@gmail.com <mailto:ed.tirelli@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@gmail.com
>     <mailto:ge0ffrey.spam@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@gmail.com
>         <mailto:ge0ffrey.spam@gmail.com>
>          > <mailto:ge0ffrey.spam@gmail.com
>         <mailto:ge0ffrey.spam@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@lists.jboss.org
>         <mailto:rules-dev@lists.jboss.org>
>         <mailto:rules-dev@lists.jboss.org
>         <mailto:rules-dev@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@lists.jboss.org <mailto:rules-dev@lists.jboss.org>
>          > https://lists.jboss.org/mailman/listinfo/rules-dev
>
>         _______________________________________________
>         rules-dev mailing list
>         rules-dev@lists.jboss.org <mailto:rules-dev@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@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev

_______________________________________________
rules-dev mailing list
rules-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev



--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss by Red Hat @ www.jboss.com