You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2015/03/26 18:08:21 UTC

[22/50] [abbrv] airavata git commit: Fixed AIRAVATA-1611

Fixed AIRAVATA-1611


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/8b2a6b06
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/8b2a6b06
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/8b2a6b06

Branch: refs/heads/master
Commit: 8b2a6b0625cef632cb75a7b8e04fb27582652112
Parents: d25441a
Author: shamrath <sh...@gmail.com>
Authored: Fri Feb 27 14:46:13 2015 -0500
Committer: shamrath <sh...@gmail.com>
Committed: Fri Feb 27 14:46:13 2015 -0500

----------------------------------------------------------------------
 .../airavata/common/utils/ServerSettings.java   | 15 +++++
 .../main/resources/airavata-server.properties   |  1 +
 .../main/resources/airavata-server.properties   |  1 +
 .../server/OrchestratorServerHandler.java       | 15 +----
 .../engine/WorkflowEnactmentService.java        | 64 ++++++++++++++++++++
 .../workflow/engine/WorkflowFactoryImpl.java    |  4 +-
 6 files changed, 85 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/8b2a6b06/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
----------------------------------------------------------------------
diff --git a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
index b076e6a..5073949 100644
--- a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
+++ b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
@@ -61,6 +61,11 @@ public class ServerSettings extends ApplicationSettings {
     public static final String GFAC_PASSIVE = "gfac.passive"; // by default this is desabled
 
 
+//    Workflow Enactment Service component configuration.
+    private static final String ENACTMENT_THREAD_POOL_SIZE = "enactment.thread.pool.size";
+    private static final int DEFAULT_ENACTMENT_THREAD_POOL_SIZE = 10;
+
+
     private static boolean stopAllThreads = false;
 
     public static String getDefaultUser() throws ApplicationSettingsException {
@@ -187,4 +192,14 @@ public class ServerSettings extends ApplicationSettings {
         }
         return null;
     }
+
+    public static int getEnactmentThreadPoolSize() {
+        String threadPoolSize = null;
+        try {
+            threadPoolSize = getSetting(ENACTMENT_THREAD_POOL_SIZE);
+        } catch (ApplicationSettingsException e) {
+            return DEFAULT_ENACTMENT_THREAD_POOL_SIZE;
+        }
+        return Integer.valueOf(threadPoolSize);
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/8b2a6b06/modules/configuration/server/src/main/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties
index e309901..12566ec 100644
--- a/modules/configuration/server/src/main/resources/airavata-server.properties
+++ b/modules/configuration/server/src/main/resources/airavata-server.properties
@@ -160,6 +160,7 @@ gfac.passive=false
 #provenanceWriterThreadPoolSize=20
 #gfac.embedded=true
 #workflowserver=org.apache.airavata.api.server.WorkflowServer
+enactment.thread.pool.size=10
 
 
 ###########################################################################

http://git-wip-us.apache.org/repos/asf/airavata/blob/8b2a6b06/modules/credential-store-service/credential-store-webapp/src/main/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/credential-store-service/credential-store-webapp/src/main/resources/airavata-server.properties b/modules/credential-store-service/credential-store-webapp/src/main/resources/airavata-server.properties
index 2ecdeb6..3cd3cdb 100644
--- a/modules/credential-store-service/credential-store-webapp/src/main/resources/airavata-server.properties
+++ b/modules/credential-store-service/credential-store-webapp/src/main/resources/airavata-server.properties
@@ -144,6 +144,7 @@ trusted.cert.location=/Users/lahirugunathilake/Downloads/certificates
 #provenanceWriterThreadPoolSize=20
 #gfac.embedded=true
 #workflowserver=org.apache.airavata.api.server.WorkflowServer
+enactment.thread.pool.size=10
 
 
 ###########################################################################

http://git-wip-us.apache.org/repos/asf/airavata/blob/8b2a6b06/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index a4e105e..d168c26 100644
--- a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -66,6 +66,7 @@ import org.apache.airavata.registry.cpi.utils.Constants.FieldConstants.TaskDetai
 import org.apache.airavata.registry.cpi.utils.Constants.FieldConstants.WorkflowNodeConstants;
 import org.apache.airavata.orchestrator.util.DataModelUtils;
 import org.apache.airavata.simple.workflow.engine.SimpleWorkflowInterpreter;
+import org.apache.airavata.simple.workflow.engine.WorkflowEnactmentService;
 import org.apache.thrift.TBase;
 import org.apache.thrift.TException;
 import org.apache.zookeeper.*;
@@ -652,19 +653,9 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface,
     }
 
     private void launchWorkflowExperiment(String experimentId, String airavataCredStoreToken) throws TException {
-//    	try {
-//			WorkflowEngine workflowEngine = WorkflowEngineFactory.getWorkflowEngine();
-//			workflowEngine.launchExperiment(experimentId, airavataCredStoreToken);
-//		} catch (WorkflowEngineException e) {
-//            log.errorId(experimentId, "Error while launching experiment.", e);
-//        }
         try {
-            SimpleWorkflowInterpreter simpleWorkflowInterpreter = new SimpleWorkflowInterpreter(
-                    experimentId, airavataCredStoreToken,getGatewayName(), getRabbitMQProcessPublisher());
-
-            Thread thread = new Thread(simpleWorkflowInterpreter);
-            thread.start();
-//            simpleWorkflowInterpreter.run();
+            WorkflowEnactmentService.getInstance().
+                    submitWorkflow(experimentId, airavataCredStoreToken, getGatewayName(), getRabbitMQProcessPublisher());
         } catch (RegistryException e) {
             log.error("Error while launching workflow", e);
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8b2a6b06/modules/simple-workflow/src/main/java/org/apache/airavata/simple/workflow/engine/WorkflowEnactmentService.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/airavata/simple/workflow/engine/WorkflowEnactmentService.java b/modules/simple-workflow/src/main/java/org/apache/airavata/simple/workflow/engine/WorkflowEnactmentService.java
new file mode 100644
index 0000000..ec5acfa
--- /dev/null
+++ b/modules/simple-workflow/src/main/java/org/apache/airavata/simple/workflow/engine/WorkflowEnactmentService.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.simple.workflow.engine;
+
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.messaging.core.impl.RabbitMQProcessPublisher;
+import org.apache.airavata.registry.cpi.RegistryException;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+public class WorkflowEnactmentService {
+
+    private static WorkflowEnactmentService workflowEnactmentService;
+    private ExecutorService executor;
+
+    private WorkflowEnactmentService () {
+        executor = Executors.newFixedThreadPool(getThreadPoolSize());
+    }
+
+    public static WorkflowEnactmentService getInstance(){
+        if (workflowEnactmentService == null) {
+            synchronized (WorkflowEnactmentService.class) {
+                if (workflowEnactmentService == null) {
+                    workflowEnactmentService = new WorkflowEnactmentService();
+                }
+            }
+        }
+        return workflowEnactmentService;
+    }
+
+    public void submitWorkflow(String experimentId,
+                                  String credentialToken,
+                                  String gatewayName,
+                                  RabbitMQProcessPublisher publisher) throws RegistryException {
+
+        SimpleWorkflowInterpreter simpleWorkflowInterpreter = new SimpleWorkflowInterpreter(
+                experimentId, credentialToken,gatewayName, publisher);
+        executor.execute(simpleWorkflowInterpreter);
+    }
+
+    private int getThreadPoolSize() {
+        return ServerSettings.getEnactmentThreadPoolSize();
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/8b2a6b06/modules/simple-workflow/src/main/java/org/apache/airavata/simple/workflow/engine/WorkflowFactoryImpl.java
----------------------------------------------------------------------
diff --git a/modules/simple-workflow/src/main/java/org/apache/airavata/simple/workflow/engine/WorkflowFactoryImpl.java b/modules/simple-workflow/src/main/java/org/apache/airavata/simple/workflow/engine/WorkflowFactoryImpl.java
index b12260d..e8674f2 100644
--- a/modules/simple-workflow/src/main/java/org/apache/airavata/simple/workflow/engine/WorkflowFactoryImpl.java
+++ b/modules/simple-workflow/src/main/java/org/apache/airavata/simple/workflow/engine/WorkflowFactoryImpl.java
@@ -33,15 +33,13 @@ public class WorkflowFactoryImpl implements WorkflowFactory {
 
     private WorkflowParser workflowParser;
 
-    private static final String synch = "sync";
-
     private WorkflowFactoryImpl(){
 
     }
 
     public static WorkflowFactoryImpl getInstance() {
         if (workflowFactoryImpl == null) {
-            synchronized (synch) {
+            synchronized (WorkflowFactory.class) {
                 if (workflowFactoryImpl == null) {
                     workflowFactoryImpl = new WorkflowFactoryImpl();
                 }