azkaban-aplcache

simplified the logic for jobJVMArgs and sneaking in a small

7/15/2014 11:42:59 PM

Details

diff --git a/azkaban-common/src/main/java/azkaban/jobtype/JobTypeManager.java b/azkaban-common/src/main/java/azkaban/jobtype/JobTypeManager.java
index 2a5a376..212f1a9 100644
--- a/azkaban-common/src/main/java/azkaban/jobtype/JobTypeManager.java
+++ b/azkaban-common/src/main/java/azkaban/jobtype/JobTypeManager.java
@@ -202,8 +202,7 @@ public class JobTypeManager {
       pluginLoadProps = new Props(commonPluginLoadProps, pluginLoadPropsFile);
       pluginLoadProps = PropsUtils.resolveProps(pluginLoadProps);
     } catch (Exception e) {
-      logger
-          .error("pluginLoadProps to help with debugging: " + pluginLoadProps);
+      logger.error("pluginLoadProps to help with debugging: " + pluginLoadProps);
       throw new JobTypeManagerException("Failed to get jobtype properties"
           + e.getMessage(), e);
     }
@@ -244,7 +243,7 @@ public class JobTypeManager {
 
   /**
    * Creates and loads all plugin resources (jars) into a ClassLoader
-   * 
+   *
    * @param pluginDir
    * @param jobTypeName
    * @param plugins
diff --git a/azkaban-execserver/src/main/java/azkaban/execapp/JMXHttpServlet.java b/azkaban-execserver/src/main/java/azkaban/execapp/JMXHttpServlet.java
index 8461548..529325f 100644
--- a/azkaban-execserver/src/main/java/azkaban/execapp/JMXHttpServlet.java
+++ b/azkaban-execserver/src/main/java/azkaban/execapp/JMXHttpServlet.java
@@ -18,6 +18,8 @@ package azkaban.execapp;
 
 import java.io.IOException;
 import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
 
 import javax.management.MBeanAttributeInfo;
 import javax.management.MBeanInfo;
@@ -31,8 +33,8 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.log4j.Logger;
 
 import azkaban.executor.ConnectorParams;
-import azkaban.server.ServerConstants;
 import azkaban.server.HttpRequestUtils;
+import azkaban.server.ServerConstants;
 import azkaban.utils.JSONUtils;
 
 public class JMXHttpServlet extends HttpServlet implements ConnectorParams {
@@ -71,7 +73,7 @@ public class JMXHttpServlet extends HttpServlet implements ConnectorParams {
           MBeanInfo info = server.getMBeanInfo(name);
 
           MBeanAttributeInfo[] mbeanAttrs = info.getAttributes();
-          HashMap<String, Object> attributes = new HashMap<String, Object>();
+          Map<String, Object> attributes = new TreeMap<String, Object>();
 
           for (MBeanAttributeInfo attrInfo : mbeanAttrs) {
             Object obj = server.getMBeanAttribute(name, attrInfo.getName());
diff --git a/azkaban-execserver/src/main/java/azkaban/execapp/JobRunner.java b/azkaban-execserver/src/main/java/azkaban/execapp/JobRunner.java
index 901fb38..b4040c0 100644
--- a/azkaban-execserver/src/main/java/azkaban/execapp/JobRunner.java
+++ b/azkaban-execserver/src/main/java/azkaban/execapp/JobRunner.java
@@ -534,15 +534,12 @@ public class JobRunner extends EventHandler implements Runnable {
         String.format(
             "-Dazkaban.flowid=%s -Dazkaban.execid=%s -Dazkaban.jobid=%s",
             flowName, executionId, jobId);
-    String previousJVMArgs = props.get(JavaProcessJob.JVM_PARAMS);
-    if (previousJVMArgs == null) {
-      previousJVMArgs = jobJVMArgs;
-    } else {
-      previousJVMArgs += " " + jobJVMArgs;
-    }
+    
+    String previousJVMArgs = props.get(JavaProcessJob.JVM_PARAMS);    
+    jobJVMArgs += (previousJVMArgs == null) ? "" : " " + previousJVMArgs; 
 
-    logger.info("job JVM args: " + previousJVMArgs);
-    props.put(JavaProcessJob.JVM_PARAMS, previousJVMArgs);
+    logger.info("job JVM args: " + jobJVMArgs);
+    props.put(JavaProcessJob.JVM_PARAMS, jobJVMArgs);
   }
 
   /**
diff --git a/azkaban-webserver/src/main/java/azkaban/webapp/servlet/JMXHttpServlet.java b/azkaban-webserver/src/main/java/azkaban/webapp/servlet/JMXHttpServlet.java
index 2c690d9..eeffd6c 100644
--- a/azkaban-webserver/src/main/java/azkaban/webapp/servlet/JMXHttpServlet.java
+++ b/azkaban-webserver/src/main/java/azkaban/webapp/servlet/JMXHttpServlet.java
@@ -19,6 +19,7 @@ package azkaban.webapp.servlet;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.TreeMap;
 
 import javax.management.MBeanAttributeInfo;
 import javax.management.MBeanInfo;
@@ -69,6 +70,7 @@ public class JMXHttpServlet extends LoginAbstractAzkabanServlet implements
     triggerManager = server.getTriggerManager();
   }
 
+  @SuppressWarnings({ "unchecked", "rawtypes" })
   @Override
   protected void handleGet(HttpServletRequest req, HttpServletResponse resp,
       Session session) throws ServletException, IOException {
@@ -95,6 +97,12 @@ public class JMXHttpServlet extends LoginAbstractAzkabanServlet implements
         Map<String, Object> result =
             executorManager.callExecutorJMX(hostPort,
                 JMX_GET_ALL_MBEAN_ATTRIBUTES, mbean);
+        // order the attribute by name
+        for (Map.Entry<String, Object> entry : result.entrySet()) {
+          if (entry.getValue() instanceof Map) {
+            result.put(entry.getKey(), new TreeMap((Map) entry.getValue()));
+          }
+        }
         ret = result;
       } else if (JMX_GET_MBEANS.equals(ajax)) {
         ret.put("mbeans", server.getMbeanNames());
@@ -139,7 +147,7 @@ public class JMXHttpServlet extends LoginAbstractAzkabanServlet implements
             MBeanInfo info = server.getMBeanInfo(name);
 
             MBeanAttributeInfo[] mbeanAttrs = info.getAttributes();
-            HashMap<String, Object> attributes = new HashMap<String, Object>();
+            Map<String, Object> attributes = new TreeMap<String, Object>();
 
             for (MBeanAttributeInfo attrInfo : mbeanAttrs) {
               Object obj = server.getMBeanAttribute(name, attrInfo.getName());