]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics/src/org/simantics/SimanticsPlatform.java
Move shutdown of worker pools to SimanticsPlatform.shutdown()
[simantics/platform.git] / bundles / org.simantics / src / org / simantics / SimanticsPlatform.java
index 8b1ac1bced1659d414c17dbf6930b11500bbed2b..1f367dc9abf83d63c8201a95d000145ff8f5d3fe 100644 (file)
@@ -91,6 +91,7 @@ import org.simantics.graph.db.TransferableGraphs;
 import org.simantics.graph.diff.Diff;
 import org.simantics.graph.diff.TransferableGraphDelta1;
 import org.simantics.internal.Activator;
+import org.simantics.internal.TimedSessionCache;
 import org.simantics.internal.startup.StartupExtensions;
 import org.simantics.layer0.Layer0;
 import org.simantics.operation.Layer0X;
@@ -113,6 +114,8 @@ import org.simantics.utils.FileUtils;
 import org.simantics.utils.datastructures.Pair;
 import org.simantics.utils.logging.TimeLogger;
 import org.simantics.utils.strings.EString;
+import org.simantics.utils.threads.ExecutorWorker;
+import org.simantics.utils.threads.ThreadUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -973,6 +976,14 @@ public class SimanticsPlatform implements LifecycleListener {
             }
             progress.worked(10);
 
+            // NOP at the moment
+            TimedSessionCache.close();
+
+            progress.subTask("Thread pools");
+            ThreadUtils.shutdown();
+            ExecutorWorker.shutdown();
+            progress.worked(5);
+
             running = false;
             progress.subTask("Close Database Session");
             if (sessionContext != null) {
@@ -999,7 +1010,7 @@ public class SimanticsPlatform implements LifecycleListener {
             // Make sure Simantics clipboard doesn't store unwanted session data references.
             Simantics.setClipboard(new SimanticsClipboardImpl());
 
-            progress.worked(30);
+            progress.worked(50);
 
             session = null;
             projectResource = null;
@@ -1021,6 +1032,15 @@ public class SimanticsPlatform implements LifecycleListener {
         }
         progress.worked(10);
 
+        progress.subTask("Clear index status");
+        try {
+            // Everything ok, clear index dirty state.
+            DatabaseIndexing.clearAllDirty();
+        } catch (IOException e) {
+            LOGGER.error("Problems encountered while refreshing database index states, see exception for details.", e);
+        }
+        progress.worked(5);
+
         if (clearTemporaryFiles) {
             progress.subTask("Clearing Workspace Temporary Directory");
             try {