• Arnaud Fontaine's avatar
    SolverProcess may not be 'solved' when there are several 'solve()' Activities... · 509b2ca4
    Arnaud Fontaine authored
    SolverProcess may not be 'solved' when there are several 'solve()' Activities executed in parallel (#KMS-1126).
    
      1. Two POLs diverge.
         => Solver Process is created ('draft').
      2. User 'Accept Decision' (Accept Solver) on all of them:
         1) Two Accept Solvers are created in the Solver Process, one per divergence.
         2) SolverProcess.solve() is called, on each Accept Solver:
            1/ AcceptSolver.startSolving() ()
               => Through solver_workflow 'Script (after)': SolverProcess.startSolving()
                  => Solver Process is in 'solving' state.
            2/ AcceptSolver.activate().solve()
               => One solve() Activity per Accept Solver.
                  => AcceptSolver.succeed()
                     => Through solver_workflow 'Script (after)': SolverProcess.succeed()
    
    The last step, 'SolverProcess.succeed()', will only be executed if and only if
    all the other Accept Solver of the Solver Process are in 'solved' state. However,
    if both Activities are executed in parallel, each Activity does not see the result
    of the other, and thus the other Accept Solver is still in 'solving' state. At
    the end the Solver Process may stay in 'solving' state.
    
    Considering that transitions of solver_process_workflow are *only* done through
    solver_workflow and thus depend on the states of its '* Solver' states, it's better
    to just remove solver_process_workflow to avoid concurrency problems and also because
    it's not really used anyway.
    509b2ca4
succeed.xml 1.92 KB