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());