JAL-3878 update branch from 2.12 merge from 2.11.2
[jalview.git] / src / jalview / workers / AlignCalcManager2.java
index 8340900..1d5c1ed 100644 (file)
@@ -23,6 +23,7 @@ import jalview.api.AlignCalcManagerI2;
 import jalview.api.AlignCalcWorkerI;
 import jalview.api.PollableAlignCalcWorkerI;
 import jalview.bin.Cache;
+import jalview.bin.Console;
 import jalview.datamodel.AlignmentAnnotation;
 
 public class AlignCalcManager2 implements AlignCalcManagerI2
@@ -59,7 +60,7 @@ public class AlignCalcManager2 implements AlignCalcManagerI2
       {
         return;
       }
-      if (!isRestartable())
+      if (!isRegistered())
       {
         setEnabled(false);
       }
@@ -70,7 +71,7 @@ public class AlignCalcManager2 implements AlignCalcManagerI2
       submit();
     }
 
-    protected boolean isRestartable()
+    protected boolean isRegistered()
     {
       return registered.containsKey(getWorker());
     }
@@ -105,27 +106,23 @@ public class AlignCalcManager2 implements AlignCalcManagerI2
         throw new IllegalStateException(
                 "Cannot submit new task if the prevoius one is still running");
       }
-      Cache.log.debug(
+      Console.debug(
               format("Worker %s queued", getWorker().getClass().getName()));
       task = executor.submit(() -> {
         try
         {
-          Cache.log.debug(format("Worker %s started",
-                  getWorker().getClass().getName()));
+          Console.debug(format("Worker %s started", getWorker()));
           getWorker().run();
-          Cache.log.debug(format("Worker %s finished",
-                  getWorker().getClass().getName()));
+          Console.debug(format("Worker %s finished", getWorker()));
         } catch (InterruptedException e)
         {
-          Cache.log.debug(format("Worker %s interrupted",
-                  getWorker().getClass().getName()));
+          Console.debug(format("Worker %s interrupted", getWorker()));
         } catch (Throwable th)
         {
-          Cache.log.debug(format("Worker %s failed",
-                  getWorker().getClass().getName()), th);
+          Console.debug(format("Worker %s failed", getWorker()), th);
         } finally
         {
-          if (!isRestartable())
+          if (!isRegistered())
           {
             // delete worker reference so garbage collector can remove it
             worker = null;
@@ -141,8 +138,7 @@ public class AlignCalcManager2 implements AlignCalcManagerI2
       {
         return;
       }
-      Cache.log.debug(format("Cancelling worker %s",
-              getWorker().getClass().getName()));
+      Console.debug(format("Cancelling worker %s", getWorker()));
       task.cancel(true);
     }
   }
@@ -175,8 +171,8 @@ public class AlignCalcManager2 implements AlignCalcManagerI2
         throw new IllegalStateException(
                 "Cannot submit new task if the prevoius one is still running");
       }
-      Cache.log.debug(
-              format("Worker %s queued", getWorker().getClass().getName()));
+      Console.debug(
+              format("Worker %s queued", getWorker()));
       final var runnable = new Runnable()
       {
         private boolean started = false;
@@ -192,35 +188,30 @@ public class AlignCalcManager2 implements AlignCalcManagerI2
           {
             if (!started)
             {
-              Cache.log.debug(format("Worker %s started",
-                      getWorker().getClass().getName()));
+              Console.debug(format("Worker %s started", getWorker()));
               getWorker().startUp();
               started = true;
             }
             else if (!completed)
             {
-              Cache.log.debug(format("Polling worker %s",
-                      getWorker().getClass().getName()));
+              Console.debug(format("Polling worker %s", getWorker()));
               if (getWorker().poll())
               {
-                Cache.log.debug(format("Worker %s finished",
-                        getWorker().getClass().getName()));
+                Console.debug(format("Worker %s finished", getWorker()));
                 completed = true;
               }
             }
           } catch (Throwable th)
           {
-            Cache.log.debug(format("Worker %s failed",
-                    getWorker().getClass().getName()), th);
+            Console.debug(format("Worker %s failed", getWorker()), th);
             completed = true;
           }
           if (completed)
           {
             final var worker = getWorker();
-            if (!isRestartable())
+            if (!isRegistered())
               PollableWorkerManager.super.worker = null;
-            Cache.log.debug(format("Finalizing completed worker %s",
-                    worker.getClass().getName()));
+            Console.debug(format("Finalizing completed worker %s", worker));
             worker.done();
             // almost impossible, but the future may be null at this point
             // let it throw NPE to cancel forcefully
@@ -238,18 +229,16 @@ public class AlignCalcManager2 implements AlignCalcManagerI2
       {
         return;
       }
-      Cache.log.debug(format("Cancelling worker %s",
-              getWorker().getClass().getName()));
+      Console.debug(format("Cancelling worker %s", getWorker()));
       task.cancel(false);
       executor.submit(() -> {
         final var worker = getWorker();
-        if (!isRestartable())
+        if (!isRegistered())
           PollableWorkerManager.super.worker = null;
         if (worker != null)
         {
           worker.cancel();
-          Cache.log.debug(format("Finalizing cancelled worker %s",
-                  worker.getClass().getName()));
+          Console.debug(format("Finalizing cancelled worker %s", worker));
           worker.done();
         }
       });
@@ -314,7 +303,10 @@ public class AlignCalcManager2 implements AlignCalcManagerI2
   @Override
   public void removeWorker(AlignCalcWorkerI worker)
   {
-    registered.remove(worker);
+    if (worker.isDeletable())
+    {
+      registered.remove(worker);
+    }
   }
 
   @Override
@@ -324,7 +316,7 @@ public class AlignCalcManager2 implements AlignCalcManagerI2
     {
       for (var worker : getWorkers())
       {
-        if (worker.involves(annot) && worker.isDeletable())
+        if (worker.involves(annot))
         {
           removeWorker(worker);
         }
@@ -429,7 +421,7 @@ public class AlignCalcManager2 implements AlignCalcManagerI2
     var manager = registered.get(worker);
     if (manager == null)
     {
-      Cache.log.warn("Starting unregistered worker " + worker);
+      Console.warn("Starting unregistered worker " + worker);
       manager = createManager(worker);
       oneshot.put(worker, manager);
     }