You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2015/04/25 02:09:50 UTC

airavata git commit: fixing issue with output handler invoation

Repository: airavata
Updated Branches:
  refs/heads/master b419e5b7a -> b47e4a933


fixing issue with output handler invoation


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

Branch: refs/heads/master
Commit: b47e4a9330e6e48bafa49442861388bbb7a40243
Parents: b419e5b
Author: Lahiru Gunathilake <gl...@gmail.com>
Authored: Fri Apr 24 20:09:55 2015 -0400
Committer: Lahiru Gunathilake <gl...@gmail.com>
Committed: Fri Apr 24 20:09:55 2015 -0400

----------------------------------------------------------------------
 .../client/samples/CreateLaunchExperiment.java  |  6 +--
 .../airavata/gfac/core/cpi/BetterGfacImpl.java  | 48 +++++++++++++++++++-
 2 files changed, 49 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/b47e4a93/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
index 829ed85..1d5de23 100644
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
@@ -58,7 +58,7 @@ public class CreateLaunchExperiment {
     private static final String DEFAULT_GATEWAY = "php_reference_gateway";
     private static Airavata.Client airavataClient;
 
-    private static String echoAppId = "Echo_418d87fe-c720-4079-acd9-7e78aaa6cf76";
+    private static String echoAppId = "Echo_a3c69094-2591-47d9-b5c4-e14c9fa5abf5";
     private static String mpiAppId = "HelloMPI_bfd56d58-6085-4b7f-89fc-646576830518";
     private static String wrfAppId = "WRF_7ad5da38-c08b-417c-a9ea-da9298839762";
     private static String amberAppId = "Amber_dda3d2bb-e128-4814-9ade-7de9070169be";
@@ -167,13 +167,13 @@ public class CreateLaunchExperiment {
 //                final String expId = createEchoExperimentForFSD(airavataClient);
 //                final String expId = createMPIExperimentForFSD(airavataClient);
 //               final String expId = createEchoExperimentForStampede(airavataClient);
-//                final String expId = createEchoExperimentForTrestles(airavataClient);
+                final String expId = createEchoExperimentForTrestles(airavataClient);
 //                final String expId = createExperimentEchoForLocalHost(airavataClient);
 //                final String expId = createExperimentWRFTrestles(airavataClient);
 //                final String expId = createExperimentForBR2(airavataClient);
 //                final String expId = createExperimentForBR2Amber(airavataClient);
 //                final String expId = createExperimentWRFStampede(airavataClient);
-                final String expId = createExperimentForStampedeAmber(airavataClient);
+//                final String expId = createExperimentForStampedeAmber(airavataClient);
 //                String expId = createExperimentForTrestlesAmber(airavataClient);
 //                final String expId = createExperimentGROMACSStampede(airavataClient);
 //                final String expId = createExperimentESPRESSOStampede(airavataClient);

http://git-wip-us.apache.org/repos/asf/airavata/blob/b47e4a93/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
index 1f5124e..12533bb 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
@@ -100,6 +100,8 @@ public class BetterGfacImpl implements GFac,Watcher {
 
     private boolean cancelled = false;
 
+    private static Integer mutex = -1;
+
     /**
      * Constructor for GFac
      *
@@ -956,6 +958,18 @@ public class BetterGfacImpl implements GFac,Watcher {
     }
 
     public void invokeOutFlowHandlers(JobExecutionContext jobExecutionContext) throws GFacException {
+        try {
+            jobExecutionContext.setZk(new ZooKeeper(AiravataZKUtils.getZKhostPort(), AiravataZKUtils.getZKTimeout(),this));
+            synchronized (mutex) {
+                mutex.wait();  // waiting for the syncConnected event
+            }
+        } catch (IOException e) {
+            log.error(e.getMessage(), e);
+        } catch (ApplicationSettingsException e) {
+            log.error(e.getMessage(), e);
+        } catch (InterruptedException e) {
+            log.error(e.getMessage(), e);
+        }
         GFacConfiguration gFacConfiguration = jobExecutionContext.getGFacConfiguration();
         List<GFacHandlerConfig> handlers = null;
         if (gFacConfiguration != null) {
@@ -1109,6 +1123,14 @@ public class BetterGfacImpl implements GFac,Watcher {
     }
 
     public void reInvokeOutFlowHandlers(JobExecutionContext jobExecutionContext) throws GFacException {
+        try {
+            jobExecutionContext.setZk(new ZooKeeper(AiravataZKUtils.getZKhostPort(), AiravataZKUtils.getZKTimeout(),this));
+
+        } catch (IOException e) {
+            log.error(e.getMessage(), e);
+        } catch (ApplicationSettingsException e) {
+            log.error(e.getMessage(), e);
+        }
         GFacConfiguration gFacConfiguration = jobExecutionContext.getGFacConfiguration();
         List<GFacHandlerConfig> handlers = null;
         if (gFacConfiguration != null) {
@@ -1253,10 +1275,32 @@ public class BetterGfacImpl implements GFac,Watcher {
 
     public void process(WatchedEvent watchedEvent) {
         log.info(watchedEvent.getPath());
-        if(Event.EventType.NodeDataChanged.equals(watchedEvent.getType())){
+        if (Event.EventType.NodeDataChanged.equals(watchedEvent.getType())) {
             // node data is changed, this means node is cancelled.
-            log.info("Experiment is cancelled with this path:"+watchedEvent.getPath());
+            log.info("Experiment is cancelled with this path:" + watchedEvent.getPath());
             this.cancelled = true;
         }
+        synchronized (mutex) {
+            Event.KeeperState state = watchedEvent.getState();
+            log.info(state.name());
+            switch (state) {
+                case SyncConnected:
+                    mutex.notify();
+                    break;
+                case Expired:
+                case Disconnected:
+                    log.info("ZK Connection is " + state.toString());
+                    try {
+                        zk = new ZooKeeper(AiravataZKUtils.getZKhostPort(), AiravataZKUtils.getZKTimeout(), this);
+                    } catch (IOException e) {
+                        log.error(e.getMessage(), e);
+                    } catch (ApplicationSettingsException e) {
+                        log.error(e.getMessage(), e);
+                    }
+//                    synchronized (mutex) {
+//                        mutex.wait();  // waiting for the syncConnected event
+//                    }
+            }
+        }
     }
 }