From b0e3359574eb00e1eaab5a7286a6f8e163b7b87f Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Wed, 8 Jul 2020 02:33:06 +0200 Subject: Fix event storm on EMF transaction finish --- .../org/eclipse/viatra/dse/api/SolutionTrajectory.java | 9 ++++++++- .../eclipse/viatra/dse/base/DesignSpaceManager.java | 18 ++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'Solvers/VIATRA-Solver/org.eclipse.viatra.dse') diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/api/SolutionTrajectory.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/api/SolutionTrajectory.java index d1a41065..500dd7d2 100644 --- a/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/api/SolutionTrajectory.java +++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/api/SolutionTrajectory.java @@ -206,7 +206,14 @@ public class SolutionTrajectory { } }; long start = System.nanoTime(); - editingDomain.getCommandStack().execute(cc); + try { + ((AdvancedViatraQueryEngine) engine).delayUpdatePropagation(() -> { + editingDomain.getCommandStack().execute(cc); + return null; + }); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } listener.forwardWorked(System.nanoTime() - start); } diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/base/DesignSpaceManager.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/base/DesignSpaceManager.java index 4c6b4097..7e7a6e51 100644 --- a/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/base/DesignSpaceManager.java +++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/base/DesignSpaceManager.java @@ -151,7 +151,14 @@ public class DesignSpaceManager implements IBacktrackListener { Object previousState = trajectory.getCurrentStateId(); long start = System.nanoTime(); - domain.getCommandStack().execute(rc); + try { + engine.delayUpdatePropagation(() -> { + domain.getCommandStack().execute(rc); + return null; + }); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } forwardTime += System.nanoTime() - start; Object newStateId = stateCoder.createStateCode(); @@ -270,7 +277,14 @@ public class DesignSpaceManager implements IBacktrackListener { }; long start = System.nanoTime(); - domain.getCommandStack().execute(rc); + try { + engine.delayUpdatePropagation(() -> { + domain.getCommandStack().execute(rc); + return null; + }); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } forwardTime += System.nanoTime() - start; Object newStateId = null; -- cgit v1.2.3-54-g00ecf