Optimized zookeeper update code, only update if job count is differ from exist 
job count


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

Branch: refs/heads/master
Commit: 45f0d68fd3da85f692a899cc371b3247267cac74
Parents: d004df1
Author: shamrath <[email protected]>
Authored: Thu Sep 11 22:02:56 2014 -0400
Committer: shamrath <[email protected]>
Committed: Thu Sep 11 22:02:56 2014 -0400

----------------------------------------------------------------------
 .../monitor/impl/pull/qstat/HPCPullMonitor.java | 22 ++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/45f0d68f/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java
 
b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java
index 6d6108e..d7c8a4e 100644
--- 
a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java
+++ 
b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java
@@ -343,6 +343,7 @@ public class HPCPullMonitor extends PullMonitor {
 
     /**
      * Build the /stat/{username}/{hostAddress}/job znode path and store job 
count
+     *
      * @param userMonitorData
      * @param completedJobs
      * @throws ApplicationSettingsException
@@ -373,9 +374,20 @@ public class HPCPullMonitor extends PullMonitor {
                             
.append(hostData.getHost().getType().getHostAddress()).append("/").append(Constants.JOB);
                     checkAndCreateZNode(zk, jobPathBuilder.toString());
                     int jobCount = 0;
+                    String jobCountStr = new 
String(zk.getData(jobPathBuilder.toString(), null, null));
+                    try {
+                        jobCount = Integer.parseInt(jobCountStr);
+                    } catch (NumberFormatException e) {
+                        // do nothing , keep jobCount 0
+                    }
                     List<MonitorID> idList = hostData.getMonitorIDs();
+                    boolean updatePath = true;
                     if (idList != null) {
-                        jobCount = idList.size();
+                        if (jobCount == idList.size()) {
+                            updatePath = false;
+                        } else {
+                            jobCount = idList.size();
+                        }
                         // removed already updated jobs from complete jobs
                         for (MonitorID monitorID : idList) {
                             if (completedJobs.contains(monitorID)) {
@@ -383,8 +395,10 @@ public class HPCPullMonitor extends PullMonitor {
                             }
                         }
                     }
-                    zk.setData(jobPathBuilder.toString(), 
String.valueOf(jobCount).getBytes(), -1);
-                    updatedPathList.add(jobPathBuilder.toString());
+                    if (updatePath) {
+                        zk.setData(jobPathBuilder.toString(), 
String.valueOf(jobCount).getBytes(), -1);
+                        updatedPathList.add(jobPathBuilder.toString());
+                    }
                 }
 
                 //handle completed jobs
@@ -416,7 +430,7 @@ public class HPCPullMonitor extends PullMonitor {
         } catch (ApplicationSettingsException e) {
             logger.error("Error while getting zookeeper hostport property", e);
         } catch (InterruptedException e) {
-            logger.error("Error while waiting for SyncConnected message" , e);
+            logger.error("Error while waiting for SyncConnected message", e);
         }
 
     }

Reply via email to