diff --git a/src/java/azkaban/executor/ExecutableFlow.java b/src/java/azkaban/executor/ExecutableFlow.java
index f008cef..277628c 100644
--- a/src/java/azkaban/executor/ExecutableFlow.java
+++ b/src/java/azkaban/executor/ExecutableFlow.java
@@ -199,9 +199,13 @@ public class ExecutableFlow {
return endNodes;
}
- public void setStatus(String nodeId, Status status) {
+ public boolean setNodeStatus(String nodeId, Status status) {
ExecutableNode exNode = executableNodes.get(nodeId);
+ if (exNode == null) {
+ return false;
+ }
exNode.setStatus(status);
+ return true;
}
public int getExecutionId() {
diff --git a/src/java/azkaban/webapp/AzkabanWebServer.java b/src/java/azkaban/webapp/AzkabanWebServer.java
index a11f8cb..15022c0 100644
--- a/src/java/azkaban/webapp/AzkabanWebServer.java
+++ b/src/java/azkaban/webapp/AzkabanWebServer.java
@@ -412,10 +412,8 @@ public class AzkabanWebServer implements AzkabanServer {
root.addServlet(new ServletHolder(new ScheduleServlet()),"/schedule");
String viewerPluginDir = azkabanSettings.getString("viewer.plugin.dir", "plugins/viewer");
- List<String> viewerPlugins = azkabanSettings.getStringList("viewer.plugins", (List<String>) null);
- if (viewerPlugins != null) {
- app.setViewerPlugins(loadViewerPlugins(root, viewerPluginDir, viewerPlugins, app.getVelocityEngine()));
- }
+ app.setViewerPlugins(loadViewerPlugins(root, viewerPluginDir, app.getVelocityEngine()));
+
//root.addServlet(new ServletHolder(new HdfsBrowserServlet()), "/hdfs/*");
root.setAttribute(AzkabanServletContextListener.AZKABAN_SERVLET_CONTEXT_KEY, app);
@@ -445,10 +443,13 @@ public class AzkabanWebServer implements AzkabanServer {
logger.info("Server running on port " + sslPortNumber + ".");
}
- private static List<ViewerPlugin> loadViewerPlugins(Context root, String pluginPath, List<String> plugins, VelocityEngine ve) {
- ArrayList<ViewerPlugin> installedViewerPlugins = new ArrayList<ViewerPlugin>();
-
+ private static List<ViewerPlugin> loadViewerPlugins(Context root, String pluginPath, VelocityEngine ve) {
File viewerPluginPath = new File(pluginPath);
+ if (!viewerPluginPath.exists()) {
+ return Collections.<ViewerPlugin>emptyList();
+ }
+
+ ArrayList<ViewerPlugin> installedViewerPlugins = new ArrayList<ViewerPlugin>();
ClassLoader parentLoader = AzkabanWebServer.class.getClassLoader();
File[] pluginDirs = viewerPluginPath.listFiles();
ArrayList<String> jarPaths = new ArrayList<String>();
diff --git a/src/java/azkaban/webapp/servlet/ExecutorServlet.java b/src/java/azkaban/webapp/servlet/ExecutorServlet.java
index 9932e12..4548bf3 100644
--- a/src/java/azkaban/webapp/servlet/ExecutorServlet.java
+++ b/src/java/azkaban/webapp/servlet/ExecutorServlet.java
@@ -628,7 +628,8 @@ public class ExecutorServlet extends LoginAbstractAzkabanServlet {
Map<String, String> paramGroup = this.getParamGroup(req, "disable");
for (Map.Entry<String, String> entry: paramGroup.entrySet()) {
boolean nodeDisabled = Boolean.parseBoolean(entry.getValue());
- exflow.setStatus(entry.getKey(), nodeDisabled ? Status.DISABLED : Status.READY);
+
+ exflow.setNodeStatus(entry.getKey(), nodeDisabled ? Status.DISABLED : Status.READY);
}
try {