Changes from JWS2 branch concerning local execution and logging
[jabaws.git] / engine / compbio / engine / LoadBalancer.java
index b23b57c..6185d42 100644 (file)
@@ -20,21 +20,35 @@ package compbio.engine;
 \r
 import java.util.List;\r
 \r
+import org.apache.log4j.Logger;\r
+\r
 import compbio.data.sequence.FastaSequence;\r
 import compbio.engine.client.Executable;\r
 import compbio.engine.local.LocalExecutorService;\r
 import compbio.metadata.Limit;\r
 import compbio.metadata.PresetManager;\r
 \r
+/**\r
+ * This class decides where to execute the job. If the local engine is enabled\r
+ * in the configuration file and it has free threads and the size of the tasks\r
+ * permits the local execution, then the local execution will be favoured.\r
+ * \r
+ * @author pvtroshin\r
+ * @version 1.0 March 2009\r
+ */\r
 public class LoadBalancer {\r
 \r
+       private static Logger log = Logger.getLogger(LoadBalancer.class);\r
+\r
        private LoadBalancer() {\r
        }\r
 \r
        public static Executable.ExecProvider getEngine(Executable<?> executable) {\r
                if (LocalExecutorService.getExecutor().canAcceptMoreWork()) {\r
+                       log.debug("LOCAL engine HAS FREE threads will execute ... ");\r
                        return Executable.ExecProvider.Local;\r
                }\r
+               log.debug("NO free threads on the LOCAL engine! Targeting for CLUSTER execution... ");\r
                return Executable.ExecProvider.Cluster;\r
        }\r
 \r
@@ -46,10 +60,13 @@ public class LoadBalancer {
                // If limit is not defined then defaults to executing on the cluster\r
                Limit<V> limit = executable\r
                                .getLimit(PresetManager.LOCAL_ENGINE_LIMIT_PRESET);\r
-\r
+               log.trace("Inspecting whether the job can be executed locally using limit: "\r
+                               + limit);\r
                if (limit == null || limit.isExceeded(dataSet)) {\r
+                       log.debug("Job EXCEEDS LOCAL execution LIMIT targeting for cluster execution! ");\r
                        return Executable.ExecProvider.Cluster;\r
                }\r
+               log.debug("Job FITS into the LOCAL execution limit consulting load balancer... ");\r
                // Even if the data satisfies criteria for local execution it may still\r
                // be executed on the cluster as the maximum capacity for local engine\r
                // may be reached.\r