This is an automated email from the ASF dual-hosted git repository.

ctubbsii pushed a commit to branch 2.0
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/2.0 by this push:
     new d501204  Some monitor javascript updates (#1234)
d501204 is described below

commit d5012048609e2c8d567a5a9b652230d36a607f19
Author: Christopher Tubbs <[email protected]>
AuthorDate: Wed Jun 26 14:49:16 2019 -0400

    Some monitor javascript updates (#1234)
    
    * Fix #1233 Use thead in tables in monitor page
    * Fix #475 display bulk import rows correctly
---
 .../core/clientImpl/TableOperationsImpl.java       |  2 +-
 .../accumulo/monitor/resources/js/bulkImport.js    | 30 +++++++++--------
 .../accumulo/monitor/resources/js/functions.js     |  4 +--
 .../org/apache/accumulo/monitor/resources/js/gc.js |  6 ++--
 .../accumulo/monitor/resources/js/listType.js      |  6 ++--
 .../apache/accumulo/monitor/resources/js/master.js |  6 ++--
 .../accumulo/monitor/resources/js/overview.js      |  8 ++---
 .../accumulo/monitor/resources/js/problems.js      | 12 +++----
 .../accumulo/monitor/resources/js/replication.js   |  6 ++--
 .../apache/accumulo/monitor/resources/js/scans.js  |  6 ++--
 .../apache/accumulo/monitor/resources/js/server.js | 14 ++++----
 .../apache/accumulo/monitor/resources/js/show.js   |  6 ++--
 .../accumulo/monitor/resources/js/summary.js       |  6 ++--
 .../apache/accumulo/monitor/resources/js/table.js  |  6 ++--
 .../accumulo/monitor/resources/js/tservers.js      |  8 ++---
 .../accumulo/monitor/templates/bulkImport.ftl      | 21 +++++++-----
 .../org/apache/accumulo/monitor/templates/gc.ftl   | 25 ++++++++------
 .../apache/accumulo/monitor/templates/listType.ftl |  8 +++--
 .../org/apache/accumulo/monitor/templates/log.ftl  | 10 +++---
 .../apache/accumulo/monitor/templates/master.ftl   | 23 ++++++++-----
 .../apache/accumulo/monitor/templates/overview.ftl | 10 +++---
 .../apache/accumulo/monitor/templates/problems.ftl | 20 +++++++----
 .../accumulo/monitor/templates/replication.ftl     | 11 +++---
 .../apache/accumulo/monitor/templates/scans.ftl    |  8 +++--
 .../apache/accumulo/monitor/templates/server.ftl   | 39 ++++++++++++++--------
 .../org/apache/accumulo/monitor/templates/show.ftl |  9 +++--
 .../apache/accumulo/monitor/templates/summary.ftl  |  9 +++--
 .../apache/accumulo/monitor/templates/table.ftl    | 35 ++++++++++---------
 .../apache/accumulo/monitor/templates/tables.ftl   | 31 +++++++++--------
 .../apache/accumulo/monitor/templates/tservers.ftl | 16 ++++++---
 30 files changed, 233 insertions(+), 168 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
index 0861faf..84c0d7a 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
@@ -667,7 +667,7 @@ public class TableOperationsImpl extends 
TableOperationsHelper {
           throw (AccumuloSecurityException) e.getCause();
         }
 
-        log.info("{} ... retrying ...", e.getMessage());
+        log.info("{} ... retrying ...", e, e);
         sleepUninterruptibly(3, TimeUnit.SECONDS);
       }
     }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/bulkImport.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/bulkImport.js
index 4240e08..b53d19a 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/bulkImport.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/bulkImport.js
@@ -44,7 +44,7 @@ function refresh() {
  */
 function refreshBulkImportTable() {
 
-  clearTable('masterBulkImportStatus');
+  clearTableBody('masterBulkImportStatus');
 
   /*
    * Get the bulk import value obtained earlier, if it doesn't exists,
@@ -52,24 +52,26 @@ function refreshBulkImportTable() {
    */
   var data = sessionStorage.bulkImports === undefined ?
       [] : JSON.parse(sessionStorage.bulkImports);
-  var items = [];
 
   /* If the data is empty, create an empty row, otherwise,
    * create the rows for the table
    */
   if (data.length === 0 || data.bulkImport.length === 0) {
-    items.push(createEmptyRow(3, 'Empty'));
+    $('<tr/>', {
+      html: createEmptyRow(3, 'Empty')
+    }).appendTo('#masterBulkImportStatus tbody');
   } else {
     $.each(data.bulkImport, function(key, val) {
+      var items = [];
       items.push(createFirstCell(val.filename, val.filename));
-      items.push(createRightCell(val.age, val.age));
+      items.push(createRightCell(val.age, new Date(val.age)));
       items.push(createRightCell(val.state, val.state));
+      $('<tr/>', {
+        html: items.join('')
+      }).appendTo('#masterBulkImportStatus tbody');
     });
   }
 
-  $('<tr/>', {
-    html: items.join('')
-  }).appendTo('#masterBulkImportStatus');
 }
 
 /**
@@ -77,31 +79,33 @@ function refreshBulkImportTable() {
  */
 function refreshServerBulkTable() {
 
-  clearTable('bulkImportStatus');
+  clearTableBody('bulkImportStatus');
 
   /* Get the bulk import value obtained earlier, if it doesn't exists,
    * create an empty array
    */
   var data = sessionStorage.bulkImports === undefined ?
    [] : JSON.parse(sessionStorage.bulkImports);
-  var items = [];
 
   /* If the data is empty, create an empty row, otherwise
    * create the rows for the table
    */
   if (data.length === 0 || data.tabletServerBulkImport.length === 0) {
-    items.push(createEmptyRow(3, 'Empty'));
+    $('<tr/>', {
+      html: createEmptyRow(3, 'Empty')
+    }).appendTo('#bulkImportStatus tbody');
   } else {
     $.each(data.tabletServerBulkImport, function(key, val) {
+      var items = [];
       items.push(createFirstCell(val.server, '<a href="/tservers?s=' +
           val.server + '">' + val.server + '</a>'));
       items.push(createRightCell(val.importSize, val.importSize));
       items.push(createRightCell(val.oldestAge, (val.oldestAge > 0 ?
           val.oldestAge : '&mdash;')));
+      $('<tr/>', {
+        html: items.join('')
+      }).appendTo('#bulkImportStatus tbody');
     });
   }
 
-  $('<tr/>', {
-    html: items.join('')
-  }).appendTo('#bulkImportStatus');
 }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/functions.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/functions.js
index 021ddfd..08fe9bd 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/functions.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/functions.js
@@ -207,9 +207,9 @@ function sanitize(url) {
  *
  * @param {string} tableID Table to clear
  */
-function clearTable(tableID) {
+function clearTableBody(tableID) {
   // JQuery selector to select all rows except for the first row (header)
-  $('#' + tableID).find('tr:not(:first)').remove();
+  $('#' + tableID + ' tbody tr').remove();
 }
 
 function createFirstCell(sortValue, showValue) {
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/gc.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/gc.js
index f4011b7..5ceaf0d 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/gc.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/gc.js
@@ -47,7 +47,7 @@ function refreshGCTable() {
 
   // Hides the banner, removes any rows from the table and hides the table
   $('#gcBanner').hide();
-  $('#gcActivity tr:gt(0)').remove();
+  clearTableBody('gcActivity');
   $('#gcActivity').hide();
 
   /* Check if the status of the gc is an error, if so, show banner, otherwise,
@@ -68,7 +68,7 @@ function refreshGCTable() {
 
       $('<tr/>', {
         html: item
-      }).appendTo('#gcActivity');
+      }).appendTo('#gcActivity tbody');
     } else {
 
       var gc = {'File&nbsp;Collection,&nbsp;Last&nbsp;Cycle' : 
data.files.lastCycle,
@@ -102,7 +102,7 @@ function refreshGCTable() {
 
           $('<tr/>', {
             html: items.join('')
-          }).appendTo('#gcActivity');
+          }).appendTo('#gcActivity tbody');
         }
       });
     }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/listType.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/listType.js
index fdea058..9ea1f89 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/listType.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/listType.js
@@ -38,7 +38,7 @@ function refresh() {
  * @param {string} minutes Minutes to display the trace
  */
 function refreshTypeTraceTable(minutes) {
-  clearTable('trace');
+  clearTableBody('trace');
 
   /*
    * Get the trace type value obtained earlier,
@@ -56,7 +56,7 @@ function refreshTypeTraceTable(minutes) {
         minutes + ' minute(s)'));
     $('<tr/>', {
       html: items.join('')
-    }).appendTo('#trace');
+    }).appendTo('#trace tbody');
   } else {
     $.each(data.traces, function(key, val) {
       var items = [];
@@ -70,7 +70,7 @@ function refreshTypeTraceTable(minutes) {
 
       $('<tr/>', {
         html: items.join('')
-      }).appendTo('#trace');
+      }).appendTo('#trace tbody');
     });
   }
 }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/master.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/master.js
index 0345fdf..38abf4d 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/master.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/master.js
@@ -57,7 +57,7 @@ function recoveryList() {
   var data = sessionStorage.recoveryList === undefined ?
       [] : JSON.parse(sessionStorage.recoveryList);
 
-  $('#recoveryList tbody tr').remove();
+  clearTableBody('recoveryList');
 
   // If there is no recovery list data, hide the table
   if (data.length === 0 || data.recoveryList.length === 0) {
@@ -91,7 +91,7 @@ function refreshMasterTable() {
 
   // Hide the banner and the master table
   $('#masterBanner').hide();
-  $('#masterStatus tr:gt(0)').remove();
+  clearTableBody('masterStatus');
   $('#masterStatus').hide();
 
   // If master status is error, show banner, otherwise, create master table
@@ -139,6 +139,6 @@ function refreshMasterTable() {
 
     $('<tr/>', {
      html: items.join('')
-    }).appendTo('#masterStatus');
+    }).appendTo('#masterStatus tbody');
   }
 }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/overview.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/overview.js
index e0d0a12..8714480 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/overview.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/overview.js
@@ -90,11 +90,11 @@ function refreshZKTable() {
   var data = sessionStorage.zk === undefined ?
       [] : JSON.parse(sessionStorage.zk);
 
-  $('#zookeeper tr td:first').hide();
-  $('#zookeeper tr:gt(2)').remove();
+  $('#zookeeper thead tr:last').hide();
+  clearTableBody('zookeeper');
 
   if (data.length === 0 || data.zkServers.length === 0) {
-    $('#zookeeper tr td:first').show();
+    $('#zookeeper thead tr:last').show();
   } else {
     $.each(data.zkServers, function(key, val) {
       var cells = '<td class="left">' + val.server + '</td>';
@@ -106,7 +106,7 @@ function refreshZKTable() {
         cells += '<td class="right"></td>';
       }
       // create a <tr> element with html containing the cell data; append it 
to the table
-      $('<tr/>', { html: cells }).appendTo('#zookeeper table');
+      $('<tr/>', { html: cells }).appendTo('#zookeeper tbody');
     });
   }
 }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/problems.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/problems.js
index dde0c22..1fd62e2 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/problems.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/problems.js
@@ -63,7 +63,7 @@ function clearDetailsProblemsTable(table, resource, type) {
  * Generates the problem summary table
  */
 function refreshProblemSummaryTable() {
-  clearTable('problemSummary');
+  clearTableBody('problemSummary');
   var data = sessionStorage.problemSummary === undefined ?
       [] : JSON.parse(sessionStorage.problemSummary);
 
@@ -72,7 +72,7 @@ function refreshProblemSummaryTable() {
     items.push(createEmptyRow(5, 'Empty'));
     $('<tr/>', {
       html: items.join('')
-    }).appendTo('#problemSummary');
+    }).appendTo('#problemSummary tbody');
   } else {
     $.each(data.problemSummary, function(key, val) {
       var items = [];
@@ -90,7 +90,7 @@ function refreshProblemSummaryTable() {
 
       $('<tr/>', {
         html: items.join('')
-      }).appendTo('#problemSummary');
+      }).appendTo('#problemSummary tbody');
     });
   }
 }
@@ -99,7 +99,7 @@ function refreshProblemSummaryTable() {
  * Generates the problem details table
  */
 function refreshProblemDetailsTable() {
-  clearTable('problemDetails');
+  clearTableBody('problemDetails');
   var data = sessionStorage.problemDetails === undefined ?
       [] : JSON.parse(sessionStorage.problemDetails);
 
@@ -108,7 +108,7 @@ function refreshProblemDetailsTable() {
     items.push(createEmptyRow(7, 'Empty'));
     $('<tr/>', {
       html: items.join('')
-    }).appendTo('#problemDetails');
+    }).appendTo('#problemDetails tbody');
   } else {
     $.each(data.problemDetails, function(key, val) {
       var items = [];
@@ -136,7 +136,7 @@ function refreshProblemDetailsTable() {
 
       $('<tr/>', {
         html: items.join('')
-      }).appendTo('#problemDetails');
+      }).appendTo('#problemDetails tbody');
 
     });
   }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/replication.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/replication.js
index c911420..2b2f1e8 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/replication.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/replication.js
@@ -42,7 +42,7 @@ function refresh() {
  * Generates the replication table
  */
 function refreshReplicationsTable() {
-  clearTable('replicationStats');
+  clearTableBody('replicationStats');
 
   var data = sessionStorage.replication === undefined ?
       [] : JSON.parse(sessionStorage.replication);
@@ -52,7 +52,7 @@ function refreshReplicationsTable() {
     items.push(createEmptyRow(5, 'Replication table is offline'));
     $('<tr/>', {
       html: items.join('')
-    }).appendTo('#replicationStats');
+    }).appendTo('#replicationStats tbody');
   } else {
     $.each(data, function(key, val) {
       var items = [];
@@ -69,7 +69,7 @@ function refreshReplicationsTable() {
 
       $('<tr/>', {
         html: items.join('')
-      }).appendTo('#replicationStats');
+      }).appendTo('#replicationStats tbody');
 
     });
   }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/scans.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/scans.js
index 20ba9ca..0ec9c8d 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/scans.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/scans.js
@@ -42,7 +42,7 @@ function refresh() {
  * Generates the scans table
  */
 function refreshScansTable() {
-  clearTable('scanStatus');
+  clearTableBody('scanStatus');
 
   var data = sessionStorage.scans === undefined ?
       [] : JSON.parse(sessionStorage.scans);
@@ -52,7 +52,7 @@ function refreshScansTable() {
 
     $('<tr/>', {
       html: items
-    }).appendTo('#scanStatus');
+    }).appendTo('#scanStatus tbody');
   } else {
     $.each(data.scans, function(key, val) {
       var items = [];
@@ -67,7 +67,7 @@ function refreshScansTable() {
 
       $('<tr/>', {
         html: items.join('')
-      }).appendTo('#scanStatus');
+      }).appendTo('#scanStatus tbody');
     });
   }
 }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/server.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/server.js
index c8658df..adfd125 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/server.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/server.js
@@ -41,7 +41,7 @@ function refresh() {
  */
 function refreshDetailTable() {
 
-  $('#tServerDetail tr:gt(0)').remove();
+  clearTableBody('tServerDetail');
 
   var data = sessionStorage.server === undefined ?
       [] : JSON.parse(sessionStorage.server);
@@ -69,7 +69,7 @@ function refreshDetailTable() {
 
   $('<tr/>', {
     html: items.join('')
-  }).appendTo('#tServerDetail');
+  }).appendTo('#tServerDetail tbody');
 }
 
 /**
@@ -77,7 +77,7 @@ function refreshDetailTable() {
  */
 function refreshHistoryTable() {
 
-  $('#opHistoryDetails tr:gt(0)').remove();
+  clearTableBody('opHistoryDetails');
 
   var data = sessionStorage.server === undefined ?
       [] : JSON.parse(sessionStorage.server);
@@ -89,7 +89,7 @@ function refreshHistoryTable() {
 
     $('<tr/>', {
       html: row.join('')
-    }).appendTo('#opHistoryDetails');
+    }).appendTo('#opHistoryDetails tbody');
   } else {
     var totalTimeSpent = 0;
     $.each(data.allTimeTabletResults, function(key, val) {
@@ -135,7 +135,7 @@ function refreshHistoryTable() {
 
       $('<tr/>', {
         html: row.join('')
-      }).appendTo('#opHistoryDetails');
+      }).appendTo('#opHistoryDetails tbody');
 
     });
   }
@@ -146,7 +146,7 @@ function refreshHistoryTable() {
  */
 function refreshCurrentTable() {
 
-  $('#currentTabletOps tr:gt(0)').remove();
+  clearTableBody('currentTabletOps');
 
   var data = sessionStorage.server === undefined ?
       [] : JSON.parse(sessionStorage.server);
@@ -180,7 +180,7 @@ function refreshCurrentTable() {
 
   $('<tr/>', {
       html: items.join('')
-  }).appendTo('#currentTabletOps');
+  }).appendTo('#currentTabletOps tbody');
 
 }
 
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/show.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/show.js
index 1aa2a09..3fc01f4 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/show.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/show.js
@@ -35,7 +35,7 @@ function refresh() {
  * Generates the trace show table
  */
 function refreshTraceShowTable() {
-  clearTable('trace');
+  clearTableBody('trace');
   $('#trace caption span span').remove();
   var data = sessionStorage.traceShow === undefined ?
       [] : JSON.parse(sessionStorage.traceShow);
@@ -92,14 +92,14 @@ function refreshTraceShowTable() {
 
       items.push('</tr>');
 
-      $('#trace').append(items.join(''));
+      $('#trace tbody').append(items.join(''));
     });
   } else {
       var items = [];
       items.push('<tr>');
       items.push(createEmptyRow(5, 'No trace information for ID ' + id));
       items.push('</tr>');
-      $('#trace').append(items.join(''));
+      $('#trace tbody').append(items.join(''));
   }
 
 }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/summary.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/summary.js
index 07f245d..507dd10 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/summary.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/summary.js
@@ -37,7 +37,7 @@ function refresh() {
  * @param {string} minutes Minutes to display traces
  */
 function refreshTraceSummaryTable(minutes) {
-  clearTable('traceSummary');
+  clearTableBody('traceSummary');
 
   var data = sessionStorage.traceSummary === undefined ?
       [] : JSON.parse(sessionStorage.traceSummary);
@@ -48,7 +48,7 @@ function refreshTraceSummaryTable(minutes) {
         minutes + ' minute(s)'));
     $('<tr/>', {
       html: items.join('')
-    }).appendTo('#traceSummary');
+    }).appendTo('#traceSummary tbody');
   } else {
     $.each(data.recentTraces, function(key, val) {
 
@@ -74,7 +74,7 @@ function refreshTraceSummaryTable(minutes) {
 
       $('<tr/>', {
         html: items.join('')
-      }).appendTo('#traceSummary');
+      }).appendTo('#traceSummary tbody');
 
     });
   }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/table.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/table.js
index 4cb940a..bf4b397 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/table.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/table.js
@@ -36,7 +36,7 @@ function refresh() {
  * Generates the table servers table
  */
 function refreshTableServersTable() {
-  $('#participatingTServers tr:gt(0)').remove();
+  clearTableBody('participatingTServers');
 
   var data = sessionStorage.tableServers === undefined ?
       [] : JSON.parse(sessionStorage.tableServers);
@@ -46,7 +46,7 @@ function refreshTableServersTable() {
     items.push(createEmptyRow(13, 'Empty'));
     $('<tr/>', {
       html: items.join('')
-    }).appendTo('#participatingTServers');
+    }).appendTo('#participatingTServers tbody');
   } else {
 
     $.each(data.servers, function(key, val) {
@@ -101,7 +101,7 @@ function refreshTableServersTable() {
 
       $('<tr/>', {
         html: items.join('')
-      }).appendTo('#participatingTServers');
+      }).appendTo('#participatingTServers tbody');
 
     });
   }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/tservers.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/tservers.js
index 51008c4..ff778cf 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/tservers.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/tservers.js
@@ -97,7 +97,7 @@ function refreshBadTServersTable() {
   var data = sessionStorage.tservers === undefined ?
       [] : JSON.parse(sessionStorage.tservers);
 
-  $('#badtservers > tbody').html('');
+  clearTableBody('badtservers');
 
   if (data.length === 0 || data.badServers.length === 0) {
     $('#badtservers').hide();
@@ -110,7 +110,7 @@ function refreshBadTServersTable() {
 
       $('<tr/>', {
         html: items.join('')
-      }).appendTo('#badtservers');
+      }).appendTo('#badtservers tbody');
     });
   }
 }
@@ -122,7 +122,7 @@ function refreshDeadTServersTable() {
   var data = sessionStorage.tservers === undefined ?
       [] : JSON.parse(sessionStorage.tservers);
 
-  $('#deadtservers > tbody').html('');
+  clearTableBody('deadtservers');
 
   if (data.length === 0 || data.deadServers.length === 0) {
     $('#deadtservers').hide();
@@ -141,7 +141,7 @@ function refreshDeadTServersTable() {
 
       $('<tr/>', {
         html: items.join('')
-      }).appendTo('#deadtservers');
+      }).appendTo('#deadtservers tbody');
     });
   }
 }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/bulkImport.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/bulkImport.ftl
index 21f2b7a..44eed43 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/bulkImport.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/bulkImport.ftl
@@ -23,11 +23,14 @@
         <div class="col-xs-12">
           <table id="masterBulkImportStatus" class="table table-bordered 
table-striped table-condensed">
             <caption><span class="table-caption">Legacy Bulk 
Imports</span><br/></caption>
-            <tbody>
-              <tr><th class="firstcell">Directory&nbsp;</th>
+            <thead>
+              <tr>
+                <th class="firstcell">Directory&nbsp;</th>
                 <th title="The age of the import.">Age&nbsp;</th>
-                <th title="The current state of the bulk 
import">State&nbsp;</th></tr>
-            </tbody>
+                <th title="The current state of the bulk 
import">State&nbsp;</th>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
@@ -36,11 +39,13 @@
         <div class="col-xs-12">
           <table id="bulkImportStatus" class="table table-bordered 
table-striped table-condensed">
             <caption><span class="table-caption">Per 
TabletServer</span><br/></caption>
-            <tbody>
-              <tr><th class="firstcell">Server</th>
+            <thead>
+              <tr>
+                <th class="firstcell">Server</th>
                 <th title="Number of imports presently running">#</th>
                 <th title="The age of the oldest import running on this 
server.">Oldest&nbsp;Age</th>
               </tr>
-            </tbody>
-        </table>
+            </thead>
+            <tbody></tbody>
+          </table>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/gc.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/gc.ftl
index 2a928ba..8340523 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/gc.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/gc.ftl
@@ -17,15 +17,18 @@
       <div><h3>${title}</h3></div>
       <div id="gcBanner"><div class="alert alert-danger" 
role="alert">Collector is Unavailable</div></div>
       <div>
-          <table id="gcActivity" class="table table-bordered table-striped 
table-condensed">
-              <tbody><tr><th class="firstcell">Activity&nbsp;</th>
-                  <th>Finished&nbsp;</th>
-                  <th>Candidates&nbsp;</th>
-                  <th>Deleted&nbsp;</th>
-                  <th>In&nbsp;Use&nbsp;</th>
-                  <th>Errors&nbsp;</th>
-                  <th>Duration&nbsp;</th>
-              </tr>
-              </tbody>
-          </table>
+        <table id="gcActivity" class="table table-bordered table-striped 
table-condensed">
+          <thead>
+            <tr>
+              <th class="firstcell">Activity&nbsp;</th>
+              <th>Finished&nbsp;</th>
+              <th>Candidates&nbsp;</th>
+              <th>Deleted&nbsp;</th>
+              <th>In&nbsp;Use&nbsp;</th>
+              <th>Errors&nbsp;</th>
+              <th>Duration&nbsp;</th>
+            </tr>
+          </thead>
+          <tbody></tbody>
+        </table>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/listType.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/listType.ftl
index e4b656a..626d3e3 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/listType.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/listType.ftl
@@ -34,12 +34,14 @@
         <div class="col-xs-12">
           <table id="trace" class="table table-bordered table-striped 
table-condensed">
             <caption><span class="table-caption">Traces for 
masterReplicationDriver</span><br/></caption>
-            <tbody>
-              <tr><th class="firstcell" title="Start Time of selected trace 
type">Start</th>
+            <thead>
+              <tr>
+                <th class="firstcell" title="Start Time of selected trace 
type">Start</th>
                 <th title="Span Time of selected trace type">ms</th>
                 <th title="Service and Location of selected trace 
type">Source</th>
               </tr>
-            </tbody>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/log.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/log.ftl
index 85f105a..32f56d9 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/log.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/log.ftl
@@ -116,15 +116,17 @@
       <div><h3>${title}</h3></div>
       <div>
         <table id="logTable" class="table table-bordered table-striped 
table-condensed">
-            <thead><tr>
+          <thead>
+            <tr>
               <th>Timestamp</th>
               <th>Application</th>
               <th>Count</th>
               <th>Level</th>
               <th class="logevent">Message</th>
-              <th>Stacktrace</th></tr>
-            </thead>
-            <tbody></tbody>
+              <th>Stacktrace</th>
+            </tr>
+          </thead>
+          <tbody></tbody>
         </table>
       </div>
       <div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/master.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/master.ftl
index b1d71ce..30ae01c 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/master.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/master.ftl
@@ -23,8 +23,9 @@
       <div class="row">
         <div class="col-xs-12">
           <table id="masterStatus" class="table table-bordered table-striped 
table-condensed">
-          <tbody>
-            <tr><th class="firstcell" title="The hostname of the master 
server">Hostname</th>
+            <thead>
+              <tr>
+                <th class="firstcell" title="The hostname of the master 
server">Hostname</th>
                 <th title="Number of tablet servers currently 
available">Online TServers&nbsp;</th>
                 <th title="The total number of tablet servers 
configured">TotalTServers&nbsp;</th>
                 <th title="The last time files were cleaned-up from 
HDFS.">Last&nbsp;GC</th>
@@ -35,18 +36,22 @@
                 <th title="The total number of Key/Value pairs read on the 
server side.  Not all may be returned because of filtering.">Entries Read</th>
                 <th title="The total number of Key/Value pairs returned as a 
result of scans.">Entries Returned</th>
                 <th title="The maximum amount of time that ingest has been 
held across all servers due to a lack of memory to store the 
records">Hold&nbsp;Time</th>
-                <th title="The Unix one minute load average. The average 
number of processes in the run queue over a one minute 
interval.">OS&nbsp;Load</th></tr>
-          </tbody>
+                <th title="The Unix one minute load average. The average 
number of processes in the run queue over a one minute 
interval.">OS&nbsp;Load</th>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
           <table id="recoveryList" class="table table-bordered table-striped 
table-condensed">
-          <caption><span class="table-caption">Log&nbsp;Recovery</span><br/>
-            <span class="table-subcaption">Some tablets were unloaded in an 
unsafe manner. Write-ahead logs are being recovered.</span><br/>
-          </caption>
-            <thead><tr>
+            <caption><span class="table-caption">Log&nbsp;Recovery</span><br/>
+              <span class="table-subcaption">Some tablets were unloaded in an 
unsafe manner. Write-ahead logs are being recovered.</span><br/>
+            </caption>
+            <thead>
+              <tr>
                 <th>Server</th>
                 <th>Log</th>
                 <th>Time</th>
-                <th>Progress</th></tr>
+                <th>Progress</th>
+              </tr>
             </thead>
             <tbody></tbody>
           </table>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/overview.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/overview.ftl
index 7a20769..4dd8a0e 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/overview.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/overview.ftl
@@ -22,7 +22,7 @@
       <div class="row">
         <div class="col-sm-6" id="master">
           <table class="table table-bordered table-striped table-condensed">
-            <tbody>
+            <thead>
               <tr><th colspan="2"><a href="/master">Accumulo 
Master</a></th></tr>
               <tr><td colspan="2" class="center" style="display:none;"><span 
class="label label-danger nowrap">Master is Down</span></td></tr>
               <tr><td class="left"><a href="/tables">Tables</a></td><td 
class="right"></td></tr>
@@ -32,16 +32,18 @@
               <tr><td class="left">Entries</td><td class="right"></td></tr>
               <tr><td class="left">Lookups</td><td class="right"></td></tr>
               <tr><td class="left">Uptime</td><td class="right"></td></tr>
-            </tbody>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
         <div class="col-sm-6" id="zookeeper">
           <table class="table table-bordered table-striped table-condensed">
-            <tbody>
+            <thead>
               <tr><th colspan="3">Zookeeper</th></tr>
               <tr><th>Server</th><th>Mode</th><th>Clients</th></tr>
               <tr><td class="center" colspan="3"><i>No Zookeepers</i></td></tr>
-            </tbody>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/problems.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/problems.ftl
index a612240..d23a736 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/problems.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/problems.ftl
@@ -32,23 +32,31 @@
         <div class="col-xs-12">
           <table id="problemSummary" class="table table-bordered table-striped 
table-condensed">
             <caption><span class="table-caption">Summary</span></caption>
-            <tbody><tr><th class="firstcell">Table&nbsp;</th>
+            <thead>
+              <tr>
+                <th class="firstcell">Table&nbsp;</th>
                 <th>FILE_READ&nbsp;</th>
                 <th>FILE_WRITE&nbsp;</th>
                 <th>TABLET_LOAD&nbsp;</th>
-                <th>Operations&nbsp;</th></tr>
-            </tbody>
+                <th>Operations&nbsp;</th>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
           <table id="problemDetails" class="table table-bordered table-striped 
table-condensed">
             <caption><span class="table-caption">Details</span></caption>
-            <tbody><tr><th class="firstcell" >Table&nbsp;</th>
+            <thead>
+              <tr>
+                <th class="firstcell" >Table&nbsp;</th>
                 <th>Problem&nbsp;Type&nbsp;</th>
                 <th>Server&nbsp;</th>
                 <th>Time&nbsp;</th>
                 <th>Resource&nbsp;</th>
                 <th>Exception&nbsp;</th>
-                <th>Operations&nbsp;</th></tr>
-            </tbody>
+                <th>Operations&nbsp;</th>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/replication.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/replication.ftl
index 42066a2..8b0b056 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/replication.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/replication.ftl
@@ -22,13 +22,16 @@
       <div class="row">
         <div class="col-xs-12">
           <table id="replicationStats" class="table table-bordered 
table-striped table-condensed">
-            <tbody>
-              <tr><th class="firstcell">Table&nbsp;</th>
+            <thead>
+              <tr>
+                <th class="firstcell">Table&nbsp;</th>
                 <th>Peer&nbsp;</th>
                 <th>Remote&nbsp;Identifier&nbsp;</th>
                 <th>Replica&nbsp;System&nbsp;Type&nbsp;</th>
-                <th>Files&nbsp;needing&nbsp;replication&nbsp;</th></tr>
-            </tbody>
+                <th>Files&nbsp;needing&nbsp;replication&nbsp;</th>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/scans.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/scans.ftl
index 498d6fe..a6a0fcd 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/scans.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/scans.ftl
@@ -22,12 +22,14 @@
       <div class="row">
         <div class="col-xs-12">
           <table id="scanStatus" class="table table-bordered table-striped 
table-condensed">
-            <tbody>
-              <tr><th class="firstcell">Server&nbsp;</th>
+            <thead>
+              <tr>
+                <th class="firstcell">Server&nbsp;</th>
                 <th title="Number of scans presently running">#&nbsp;</th>
                 <th title="The age of the oldest scan on this 
server.">Oldest&nbsp;Age&nbsp;</th>
               </tr>
-            </tbody>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/server.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/server.ftl
index eaf111c..9fa38f6 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/server.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/server.ftl
@@ -81,13 +81,16 @@
         <div class="col-xs-12">
           <table id="tServerDetail" class="table table-bordered table-striped 
table-condensed">
             <caption><span class="table-caption">${server}</span></caption>
-            <tbody>
-              <tr><th class="firstcell">Hosted&nbsp;Tablets&nbsp;</th>
+            <thead>
+              <tr>
+                <th class="firstcell">Hosted&nbsp;Tablets&nbsp;</th>
                 <th>Entries&nbsp;</th>
                 <th>Minor&nbsp;Compacting&nbsp;</th>
                 <th>Major&nbsp;Compacting&nbsp;</th>
-                <th>Splitting&nbsp;</th></tr>
-            </tbody>
+                <th>Splitting&nbsp;</th>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
@@ -95,16 +98,19 @@
         <div class="col-xs-12">
           <table id="opHistoryDetails" class="table table-bordered 
table-striped table-condensed">
             <caption><span 
class="table-caption">All-Time&nbsp;Tablet&nbsp;Operation&nbsp;Results</span></caption>
-            <tbody>
-              <tr><th class="firstcell">Operation&nbsp;</th>
+            <thead>
+              <tr>
+                <th class="firstcell">Operation&nbsp;</th>
                 <th>Success&nbsp;</th>
                 <th>Failure&nbsp;</th>
                 <th>Average<br/>Queue&nbsp;Time&nbsp;</th>
                 <th>Std.&nbsp;Dev.<br/>Queue&nbsp;Time&nbsp;</th>
                 <th>Average<br/>Time&nbsp;</th>
                 <th>Std.&nbsp;Dev.<br/>Time&nbsp;</th>
-                <th>Percentage&nbsp;Time&nbsp;Spent&nbsp;</th></tr>
-            </tbody>
+                <th>Percentage&nbsp;Time&nbsp;Spent&nbsp;</th>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
@@ -112,12 +118,15 @@
         <div class="col-xs-12">
           <table id="currentTabletOps" class="table table-bordered 
table-striped table-condensed">
             <caption><span 
class="table-caption">Current&nbsp;Tablet&nbsp;Operation&nbsp;Results</span></caption>
-            <tbody>
-              <tr><th class="firstcell">Minor&nbsp;Average&nbsp;</th>
+            <thead>
+              <tr>
+                <th class="firstcell">Minor&nbsp;Average&nbsp;</th>
                 <th>Minor&nbsp;Std&nbsp;Dev&nbsp;</th>
                 <th>Major&nbsp;Avg&nbsp;</th>
-                <th>Major&nbsp;Std&nbsp;Dev&nbsp;</th></tr>
-            </tbody>
+                <th>Major&nbsp;Std&nbsp;Dev&nbsp;</th>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
@@ -126,7 +135,8 @@
           <table id="perTabletResults" class="table table-bordered 
table-striped table-condensed">
             <caption><span class="table-caption">Detailed Tablet 
Operations</span></caption>
             <thead>
-              <tr><th>Table&nbsp;</th>
+              <tr>
+                <th>Table&nbsp;</th>
                 <th>Tablet&nbsp;</th>
                 <th class="big-num">Entries&nbsp;</th>
                 <th class="big-num">Ingest&nbsp;</th>
@@ -136,7 +146,8 @@
                 <th class="big-num">Minor&nbsp;Avg&nbsp;e/s&nbsp;</th>
                 <th class="duration">Major&nbsp;Avg&nbsp;</th>
                 <th class="duration">Major&nbsp;Std&nbsp;Dev&nbsp;</th>
-                <th class="big-num">Major&nbsp;Avg&nbsp;e/s&nbsp;</th></tr>
+                <th class="big-num">Major&nbsp;Avg&nbsp;e/s&nbsp;</th>
+              </tr>
             </thead>
             <tbody></tbody>
           </table>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/show.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/show.ftl
index 926e772..3724316 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/show.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/show.ftl
@@ -66,9 +66,12 @@
         <div class="col-xs-12">
           <table id="trace" class="table table-bordered table-striped 
table-condensed">
             <caption><span id="caption" class="table-caption">Trace ${id} 
started at<br/></span></caption>
-            <tbody>
-            
<tr><th>Time&nbsp;</th><th>Start&nbsp;</th><th>Service@Location&nbsp;</th><th>Name&nbsp;</th><th>Addl&nbsp;Data&nbsp;</th></tr>
-            </tbody>
+            <thead>
+              <tr>
+                
<th>Time&nbsp;</th><th>Start&nbsp;</th><th>Service@Location&nbsp;</th><th>Name&nbsp;</th><th>Addl&nbsp;Data&nbsp;</th>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/summary.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/summary.ftl
index c98f723..643e8d9 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/summary.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/summary.ftl
@@ -32,14 +32,17 @@
       <div class="row">
         <div class="col-xs-12">
           <table id="traceSummary" class="table table-bordered table-striped 
table-condensed">
-            <tbody><tr><th class="firstcell" title="Trace Type">Type&nbsp;</th>
+            <thead>
+              <tr>
+                <th class="firstcell" title="Trace Type">Type&nbsp;</th>
                 <th title="Number of spans of this type">Total&nbsp;</th>
                 <th title="Shortest span duration">min&nbsp;</th>
                 <th title="Longest span duration">max&nbsp;</th>
                 <th title="Average span duration">avg&nbsp;</th>
                 <th title="Counts of spans of different duration. Columns 
start at milliseconds, and each column is ten times longer: tens of 
milliseconds, seconds, tens of seconds, etc.">Histogram&nbsp;</th>
-            </tr>
-            </tbody>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/table.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/table.ftl
index 19b1512..53aac4d 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/table.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/table.ftl
@@ -31,22 +31,25 @@
       <div class="row">
         <div class="col-xs-12">
           <table id="participatingTServers" class="table table-bordered 
table-striped table-condensed">
-          <caption><span class="table-caption">${table}</span></caption>
-          <tbody>
-          <tr><th class="firstcell">Server&nbsp;</th>
-          <th>Hosted&nbsp;Tablets&nbsp;</th>
-          <th>Last&nbsp;Contact&nbsp;</th>
-          <th title="Key/value pairs over each instance, table or 
tablet.">Entries&nbsp;</th>
-          <th title="The number of Key/Value pairs inserted. (Note that 
deletes are considered inserted)">Ingest&nbsp;</th>
-          <th title="The number of key/value pairs returned to clients. (Not 
the number of scans)">Query&nbsp;</th>
-          <th title="The amount of time that ingest operations are suspended 
while waiting for data to be written to disk.">Hold&nbsp;Time&nbsp;</th>
-          <th title="Information about the scans threads. Shows how many 
threads are running and how much work is queued for the 
threads.">Running<br/>Scans&nbsp;</th>
-          <th title="The action of flushing memory to disk. Multiple tablets 
can be compacted simultaneously, but sometimes they must wait for resources to 
be available. The number of tablets waiting for compaction are in 
parentheses.">Minor<br/>Compactions&nbsp;</th>
-          <th title="The action of gathering up many small files and rewriting 
them as one larger file.">Major<br/>Compactions&nbsp;</th>
-          <th title="The recent index cache hit rate.">Index Cache<br/>Hit 
Rate&nbsp;</th>
-          <th title="The recent data cache hit rate.">Data Cache<br/>Hit 
Rate&nbsp;</th>
-          <th title="The Unix one minute load average. The average number of 
processes in the run queue over a one minute 
interval.">OS&nbsp;Load&nbsp;</th></tr>
-          </tbody>
+            <caption><span class="table-caption">${table}</span></caption>
+            <thead>
+              <tr>
+                <th class="firstcell">Server&nbsp;</th>
+                <th>Hosted&nbsp;Tablets&nbsp;</th>
+                <th>Last&nbsp;Contact&nbsp;</th>
+                <th title="Key/value pairs over each instance, table or 
tablet.">Entries&nbsp;</th>
+                <th title="The number of Key/Value pairs inserted. (Note that 
deletes are considered inserted)">Ingest&nbsp;</th>
+                <th title="The number of key/value pairs returned to clients. 
(Not the number of scans)">Query&nbsp;</th>
+                <th title="The amount of time that ingest operations are 
suspended while waiting for data to be written to 
disk.">Hold&nbsp;Time&nbsp;</th>
+                <th title="Information about the scans threads. Shows how many 
threads are running and how much work is queued for the 
threads.">Running<br/>Scans&nbsp;</th>
+                <th title="The action of flushing memory to disk. Multiple 
tablets can be compacted simultaneously, but sometimes they must wait for 
resources to be available. The number of tablets waiting for compaction are in 
parentheses.">Minor<br/>Compactions&nbsp;</th>
+                <th title="The action of gathering up many small files and 
rewriting them as one larger file.">Major<br/>Compactions&nbsp;</th>
+                <th title="The recent index cache hit rate.">Index 
Cache<br/>Hit Rate&nbsp;</th>
+                <th title="The recent data cache hit rate.">Data Cache<br/>Hit 
Rate&nbsp;</th>
+                <th title="The Unix one minute load average. The average 
number of processes in the run queue over a one minute 
interval.">OS&nbsp;Load&nbsp;</th>
+              </tr>
+            </thead>
+            <tbody></tbody>
           </table>
         </div>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tables.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tables.ftl
index 74330fb..6e125c7 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tables.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tables.ftl
@@ -78,21 +78,24 @@
       </script>
       <div><h3>${tablesTitle}</h3></div>
       <div>
-          <table id="tableList" class="table table-bordered table-striped 
table-condensed">
+        <table id="tableList" class="table table-bordered table-striped 
table-condensed">
           <thead>
-            <tr><th>Table&nbsp;Name</th>
-                <th>State</th>
-                <th title="Tables are broken down into ranges of rows called 
tablets." class="big-num">Tablets</th>
-                <th title="Tablets unavailable for query or ingest. May be a 
transient condition when tablets are moved for balancing." 
class="big-num">Offline</th>
-                <th title="Key/value pairs over each instance, table or 
tablet." class="big-num">Entries</th>
-                <th title="The total number of key/value pairs stored in 
memory and not yet written to disk." class="big-num">In&nbsp;Mem</th>
-                <th title="The rate of Key/Value pairs inserted. (Note that 
deletes are considered inserted)" class="big-num">Ingest</th>
-                <th title="The rate of Key/Value pairs read on the server 
side. Not all key values read may be returned to client because of filtering." 
class="big-num">Read</th>
-                <th title="The rate of Key/Value pairs returned to clients 
during queries. This is not the number of scans." class="big-num">Returned</th>
-                <th title="The amount of time that ingest operations are 
suspended while waiting for data to be written to disk." 
class="big-num">Hold&nbsp;Time</th>
-                <th title="Running scans. The number queued waiting are in 
parentheses.">Scans</th>
-                <th title="Minor Compactions. The number of tablets waiting 
for compaction are in parentheses.">MinC</th>
-                <th title="Major Compactions. The number of tablets waiting 
for compaction are in parentheses.">MajC</th></tr>
+            <tr>
+              <th>Table&nbsp;Name</th>
+              <th>State</th>
+              <th title="Tables are broken down into ranges of rows called 
tablets." class="big-num">Tablets</th>
+              <th title="Tablets unavailable for query or ingest. May be a 
transient condition when tablets are moved for balancing." 
class="big-num">Offline</th>
+              <th title="Key/value pairs over each instance, table or tablet." 
class="big-num">Entries</th>
+              <th title="The total number of key/value pairs stored in memory 
and not yet written to disk." class="big-num">In&nbsp;Mem</th>
+              <th title="The rate of Key/Value pairs inserted. (Note that 
deletes are considered inserted)" class="big-num">Ingest</th>
+              <th title="The rate of Key/Value pairs read on the server side. 
Not all key values read may be returned to client because of filtering." 
class="big-num">Read</th>
+              <th title="The rate of Key/Value pairs returned to clients 
during queries. This is not the number of scans." class="big-num">Returned</th>
+              <th title="The amount of time that ingest operations are 
suspended while waiting for data to be written to disk." 
class="big-num">Hold&nbsp;Time</th>
+              <th title="Running scans. The number queued waiting are in 
parentheses.">Scans</th>
+              <th title="Minor Compactions. The number of tablets waiting for 
compaction are in parentheses.">MinC</th>
+              <th title="Major Compactions. The number of tablets waiting for 
compaction are in parentheses.">MajC</th>
+            </tr>
           </thead>
+          <tbody></tbody>
         </table>
       </div>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tservers.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tservers.ftl
index 4b332c5..850c7bd 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tservers.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tservers.ftl
@@ -24,25 +24,31 @@
           <table id="badtservers" class="table table-bordered table-striped 
table-condensed">
             <caption><span class="table-caption">Non-Functioning Tablet 
Servers</span><br/>
               <span class="table-subcaption">The following tablet servers 
reported a status other than Online</span></caption>
-            <thead><tr>
+            <thead>
+              <tr>
                 <th>Server</th>
-                <th>Status</th></tr>
+                <th>Status</th>
+              </tr>
             </thead>
             <tbody></tbody>
           </table>
           <table id="deadtservers" class="table table-bordered table-striped 
table-condensed">
             <caption><span class="table-caption">Dead Tablet 
Servers</span><br/>
               <span class="table-subcaption">The following tablet servers are 
no longer reachable.</span><br/></caption>
-            <thead><tr>
+            <thead>
+              <tr>
                 <th>Server</th>
                 <th class="duration">Last Updated</th>
                 <th>Event</th>
-                <th>Clear</th></tr>
+                <th>Clear</th>
+              </tr>
             </thead>
             <tbody></tbody>
           </table>
           <table id="tservers" class="table table-bordered table-striped 
table-condensed">
-            <thead><tr><th class="firstcell">Server&nbsp;</th>
+            <thead>
+              <tr>
+                <th class="firstcell">Server&nbsp;</th>
                 <th class="big-num">Hosted&nbsp;Tablets&nbsp;</th>
                 <th class="duration">Last&nbsp;Contact&nbsp;</th>
                 <th title="The time it took for the tserver to return its 
status." class="duration">Response&nbsp;Time&nbsp;</th>

Reply via email to