aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKunal Khatua <kkhatua@maprtech.com>2019-01-04 15:14:58 -0800
committerVitalii Diravka <vitalii.diravka@gmail.com>2019-01-18 18:07:38 +0200
commita566b0af0eb24a9ee6ed91bd4ad31a17e529e8d9 (patch)
tree2d1f453d644cb8962183a21fd7d687ee2af0e376
parentde863afcd17447c3f2bb91a7ddd9f1c273a633a4 (diff)
DRILL-6942: Provide ability to sort list of profiles on Drill Web UI
This provides an option to order the list of query profiles based on any of the displayed fields, including total duration. This way, a user can easily identify long running queries. In addition, the number of profiles listed per page for both, completed and running list of queries, has been made configurable with the parameter: `drill.exec.http.profiles_per_page` (default is 10,25,50,100) closes #1594
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/ExecConstants.java1
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileResources.java8
-rw-r--r--exec/java-exec/src/main/resources/drill-module.conf1
-rw-r--r--exec/java-exec/src/main/resources/rest/options.ftl13
-rw-r--r--exec/java-exec/src/main/resources/rest/profile/list.ftl14
-rw-r--r--exec/java-exec/src/main/resources/rest/profile/profile.ftl14
-rw-r--r--exec/java-exec/src/main/resources/rest/static/css/drill-dataTables.sortable.css11
7 files changed, 30 insertions, 32 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/ExecConstants.java b/exec/java-exec/src/main/java/org/apache/drill/exec/ExecConstants.java
index 6ce4822ff..bab94a180 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/ExecConstants.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/ExecConstants.java
@@ -203,6 +203,7 @@ public final class ExecConstants {
public static final String HAZELCAST_SUBNETS = "drill.exec.cache.hazel.subnets";
public static final String HTTP_ENABLE = "drill.exec.http.enabled";
public static final String HTTP_MAX_PROFILES = "drill.exec.http.max_profiles";
+ public static final String HTTP_PROFILES_PER_PAGE = "drill.exec.http.profiles_per_page";
public static final String HTTP_PORT = "drill.exec.http.port";
public static final String HTTP_PORT_HUNT = "drill.exec.http.porthunt";
public static final String HTTP_JETTY_SERVER_ACCEPTORS = "drill.exec.http.jetty.server.acceptors";
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileResources.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileResources.java
index af2b7905a..e88b57cb4 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileResources.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileResources.java
@@ -57,7 +57,7 @@ import org.apache.drill.exec.store.sys.PersistentStoreProvider;
import org.apache.drill.exec.work.WorkManager;
import org.apache.drill.exec.work.foreman.Foreman;
import org.glassfish.jersey.server.mvc.Viewable;
-
+import org.apache.drill.shaded.guava.com.google.common.base.Joiner;
import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
@Path("/")
@@ -219,6 +219,12 @@ public class ProfileResources {
return work.getContext().getConfig().getInt(ExecConstants.HTTP_MAX_PROFILES);
}
+ public String getQueriesPerPage() {
+ List<Integer> queriesPerPageOptions = work.getContext().getConfig().getIntList(ExecConstants.HTTP_PROFILES_PER_PAGE);
+ Collections.sort(queriesPerPageOptions);
+ return Joiner.on(",").join(queriesPerPageOptions);
+ }
+
public List<String> getErrors() { return errors; }
}
diff --git a/exec/java-exec/src/main/resources/drill-module.conf b/exec/java-exec/src/main/resources/drill-module.conf
index 018dc9161..6b9fe6fbf 100644
--- a/exec/java-exec/src/main/resources/drill-module.conf
+++ b/exec/java-exec/src/main/resources/drill-module.conf
@@ -142,6 +142,7 @@ drill.exec: {
}
}
max_profiles: 100,
+ profiles_per_page: [10, 25, 50, 100],
profile.warning: {
progress.threshold: 300,
time.skew: {
diff --git a/exec/java-exec/src/main/resources/rest/options.ftl b/exec/java-exec/src/main/resources/rest/options.ftl
index 1fce03ca5..e1c904d03 100644
--- a/exec/java-exec/src/main/resources/rest/options.ftl
+++ b/exec/java-exec/src/main/resources/rest/options.ftl
@@ -64,18 +64,7 @@
<link href="/static/css/dataTables.colVis-1.1.0.min.css" rel="stylesheet">
<link href="/static/css/dataTables.jqueryui.css" rel="stylesheet">
<link href="/static/css/jquery-ui-1.10.3.min.css" rel="stylesheet">
-<style>
-/* DataTables Sorting: inherited via sortable class */
-table.sortable thead .sorting,.sorting_asc,.sorting_desc {
- background-repeat: no-repeat;
- background-position: center right;
- cursor: pointer;
-}
-/* Sorting Symbols */
-table.sortable thead .sorting { background-image: url("/static/img/black-unsorted.gif"); }
-table.sortable thead .sorting_asc { background-image: url("/static/img/black-asc.gif"); }
-table.sortable thead .sorting_desc { background-image: url("/static/img/black-desc.gif"); }
-</style>
+ <link href="/static/css/drill-dataTables.sortable.css" rel="stylesheet">
</#macro>
<#macro page_body>
diff --git a/exec/java-exec/src/main/resources/rest/profile/list.ftl b/exec/java-exec/src/main/resources/rest/profile/list.ftl
index cc9b63ca9..1afeb7deb 100644
--- a/exec/java-exec/src/main/resources/rest/profile/list.ftl
+++ b/exec/java-exec/src/main/resources/rest/profile/list.ftl
@@ -21,16 +21,18 @@
<#macro page_head>
<script src="/static/js/jquery.dataTables-1.10.16.min.js"></script>
+<link href="/static/css/drill-dataTables.sortable.css" rel="stylesheet">
<script>
$(document).ready(function() {
$.each(["running","completed"], function(i, key) {
$("#profileList_"+key).DataTable( {
- //Preserve order
- "ordering": false,
+ //Permit sorting-by-column
+ "ordering": true,
+ "order": [[0, "desc"]],
"searching": true,
"paging": true,
"pagingType": "full_numbers",
- "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
+ "lengthMenu": [[${model.getQueriesPerPage()}, -1], [${model.getQueriesPerPage()}, "All"]],
"lengthChange": true,
"info": true,
//Ref: https://legacy.datatables.net/ref#sDom
@@ -193,7 +195,7 @@
<#macro list_queries queries stateList>
<div class="table-responsive">
- <table id="profileList_${stateList}" class="table table-hover dataTable" role="grid">
+ <table id="profileList_${stateList}" class="table table-hover sortable dataTable" role="grid">
<thead>
<tr role="row">
<#if stateList == "running" >
@@ -213,7 +215,7 @@
<#if stateList == "running" >
<td><input type="checkbox" name="cancelQ" value="${query.getQueryId()}"/></td>
</#if>
- <td>${query.getTime()}</td>
+ <td data-order='${query.getStartTime()}'>${query.getTime()}</td>
<td>${query.getUser()}</td>
<td>
<a href="/profiles/${query.getQueryId()}">
@@ -221,7 +223,7 @@
</a>
</td>
<td>${query.getState()}</td>
- <td>${query.getDuration()}</td>
+ <td data-order='${query.getEndTime() - query.getStartTime()}'>${query.getDuration()}</td>
<td>${query.getForeman()}</td>
</tr>
</#list>
diff --git a/exec/java-exec/src/main/resources/rest/profile/profile.ftl b/exec/java-exec/src/main/resources/rest/profile/profile.ftl
index e432e2080..6d5690a06 100644
--- a/exec/java-exec/src/main/resources/rest/profile/profile.ftl
+++ b/exec/java-exec/src/main/resources/rest/profile/profile.ftl
@@ -33,6 +33,7 @@
<script src="/static/js/ace-code-editor/theme-sqlserver.js" type="text/javascript" charset="utf-8"></script>
<script src="/static/js/ace-code-editor/snippets/sql.js" type="text/javascript" charset="utf-8"></script>
<script src="/static/js/ace-code-editor/mode-snippets.js" type="text/javascript" charset="utf-8"></script>
+<link href="/static/css/drill-dataTables.sortable.css" rel="stylesheet">
<script>
var globalconfig = {
@@ -97,19 +98,6 @@
};
</script>
-<style>
-/* DataTables Sorting: inherited via sortable class */
-table.sortable thead .sorting,.sorting_asc,.sorting_desc {
- background-repeat: no-repeat;
- background-position: center right;
- cursor: pointer;
-}
-/* Sorting Symbols */
-table.sortable thead .sorting { background-image: url("/static/img/black-unsorted.gif"); }
-table.sortable thead .sorting_asc { background-image: url("/static/img/black-asc.gif"); }
-table.sortable thead .sorting_desc { background-image: url("/static/img/black-desc.gif"); }
-</style>
-
</#macro>
<#macro page_body>
diff --git a/exec/java-exec/src/main/resources/rest/static/css/drill-dataTables.sortable.css b/exec/java-exec/src/main/resources/rest/static/css/drill-dataTables.sortable.css
new file mode 100644
index 000000000..47f426009
--- /dev/null
+++ b/exec/java-exec/src/main/resources/rest/static/css/drill-dataTables.sortable.css
@@ -0,0 +1,11 @@
+/* DataTables Sorting: inherited via sortable class */
+table.sortable thead .sorting,.sorting_asc,.sorting_desc {
+ background-repeat: no-repeat;
+ background-position: center right;
+ cursor: pointer;
+}
+/* Sorting Symbols */
+table.sortable thead .sorting { background-image: url("/static/img/black-unsorted.gif"); }
+table.sortable thead .sorting_asc { background-image: url("/static/img/black-asc.gif"); }
+table.sortable thead .sorting_desc { background-image: url("/static/img/black-desc.gif"); }
+