Uploaded image for project: 'OptaPlanner'
  1. OptaPlanner
  2. PLANNER-1318

Full assert should check if the move thread's state (genuine variables + shadow variables) is the same as the solver's state

    Details

    • Type: Enhancement
    • Status: Open (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 7.12.0.Final
    • Fix Version/s: Future
    • Component/s: optaplanner-core
    • Labels:
      None
    • Story Points:
      5
    • Docs QE Status:
      NEW
    • QE Status:
      NEW

      Description

      To explain Donato's score corruption.

      Basically, there was a shadow variable that got changed by the variable listener to another value and during the undo changed to a state different from the original one. This affected the score calculation later down the line (not immediatly).
      That happened in the move thread, and never in the solver thread as that move wasn't picked.

      Proposal A)
      Check it when the move threads retrieve a step operation from the solver thread.
      -> This is too late, in the donato bug it already crashed the solver thread upon finishing the step.

      Proposal B)
      Check it when the solver threads applies a winning step received from a move thread
      -> this would mean that all moves need to send a planning clone of their solution state (too costly)

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  Unassigned
                  Reporter:
                  ge0ffrey Geoffrey De Smet
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated: