azkaban-aplcache

Make pageSize configurable (#1797) This will address the

8/23/2018 2:08:03 PM

Details

diff --git a/az-core/src/main/java/azkaban/Constants.java b/az-core/src/main/java/azkaban/Constants.java
index b3fd0f4..0f2b336 100644
--- a/az-core/src/main/java/azkaban/Constants.java
+++ b/az-core/src/main/java/azkaban/Constants.java
@@ -229,6 +229,9 @@ public class Constants {
 
     // allowed max size of shared project dir in MB
     public static final String PROJECT_DIR_MAX_SIZE_IN_MB = "azkaban.project_cache_max_size_in_mb";
+
+    // number of rows to be displayed on the executions page.
+    public static final String DISPLAY_EXECUTION_PAGE_SIZE = "azkaban.display.execution_page_size";
   }
 
   public static class FlowProperties {
diff --git a/azkaban-solo-server/src/main/resources/conf/azkaban.properties b/azkaban-solo-server/src/main/resources/conf/azkaban.properties
index a09550d..624c6c7 100644
--- a/azkaban-solo-server/src/main/resources/conf/azkaban.properties
+++ b/azkaban-solo-server/src/main/resources/conf/azkaban.properties
@@ -41,3 +41,5 @@ jetty.connector.stats=true
 executor.connector.stats=true
 # Azkaban plugin settings
 azkaban.jobtype.plugin.dir=plugins/jobtypes
+# Number of executions to be displayed
+azkaban.display.execution_page_size=16
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java
index a9da66c..30b1a89 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java
@@ -18,6 +18,8 @@ package azkaban.webapp.servlet;
 
 import static azkaban.ServiceProvider.SERVICE_PROVIDER;
 
+import azkaban.Constants;
+import azkaban.Constants.ConfigurationKeys;
 import azkaban.server.AzkabanServer;
 import azkaban.server.HttpRequestUtils;
 import azkaban.server.session.Session;
@@ -68,6 +70,8 @@ public abstract class AbstractAzkabanServlet extends HttpServlet {
   private List<ViewerPlugin> viewerPlugins;
   private List<TriggerPlugin> triggerPlugins;
 
+  private int displayExecutionPageSize;
+
   public static String createJsonResponse(final String status, final String message,
       final String action, final Map<String, Object> params) {
     final HashMap<String, Object> response = new HashMap<>();
@@ -106,6 +110,7 @@ public abstract class AbstractAzkabanServlet extends HttpServlet {
     this.label = props.getString("azkaban.label", "");
     this.color = props.getString("azkaban.color", "#FF0000");
     this.passwordPlaceholder = props.getString("azkaban.password.placeholder", "Password");
+    this.displayExecutionPageSize = props.getInt(ConfigurationKeys.DISPLAY_EXECUTION_PAGE_SIZE, 16);
 
     if (this.application instanceof AzkabanWebServer) {
       final AzkabanWebServer server = (AzkabanWebServer) this.application;
@@ -369,4 +374,8 @@ public abstract class AbstractAzkabanServlet extends HttpServlet {
     resp.setContentType(JSON_MIME_TYPE);
     JSONUtils.toJSON(obj, resp.getOutputStream(), true);
   }
+
+  protected int getDisplayExecutionPageSize() {
+    return displayExecutionPageSize;
+  }
 }
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/HistoryServlet.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/HistoryServlet.java
index 4a354da..6ab39e2 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/HistoryServlet.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/HistoryServlet.java
@@ -87,7 +87,7 @@ public class HistoryServlet extends LoginAbstractAzkabanServlet {
         newPage(req, resp, session,
             "azkaban/webapp/servlet/velocity/historypage.vm");
     int pageNum = getIntParam(req, "page", 1);
-    final int pageSize = getIntParam(req, "size", 16);
+    final int pageSize = getIntParam(req, "size", getDisplayExecutionPageSize());
     page.add("vmutils", new VelocityUtil(this.projectManager));
 
     if (pageNum < 0) {
diff --git a/azkaban-web-server/src/main/resources/azkaban/webapp/servlet/velocity/flowpage.vm b/azkaban-web-server/src/main/resources/azkaban/webapp/servlet/velocity/flowpage.vm
index 7c0e4b7..bcbb9ab 100644
--- a/azkaban-web-server/src/main/resources/azkaban/webapp/servlet/velocity/flowpage.vm
+++ b/azkaban-web-server/src/main/resources/azkaban/webapp/servlet/velocity/flowpage.vm
@@ -48,6 +48,7 @@
     var projectName = "${project.name}";
     var flowId = "${flowid}";
     var execId = null;
+    var pageSize = "${size}";
   </script>
   <link rel="stylesheet" type="text/css" href="${context}/css/morris.css"/>
   <link rel="stylesheet" type="text/css" href="${context}/css/bootstrap-datetimepicker.css"/>
diff --git a/azkaban-web-server/src/web/js/azkaban/view/flow.js b/azkaban-web-server/src/web/js/azkaban/view/flow.js
index 014671e..8e50e89 100644
--- a/azkaban-web-server/src/web/js/azkaban/view/flow.js
+++ b/azkaban-web-server/src/web/js/azkaban/view/flow.js
@@ -114,7 +114,7 @@ azkaban.ExecutionsView = Backbone.View.extend({
   initialize: function (settings) {
     this.model.bind('change:view', this.handleChangeView, this);
     this.model.bind('render', this.render, this);
-    this.model.set({page: 1, pageSize: 16});
+    this.model.set({page: 1, pageSize: this.pageSize});
     this.model.bind('change:page', this.handlePageChange, this);
   },