[
https://issues.apache.org/jira/browse/DRILL-6364?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16459089#comment-16459089
]
ASF GitHub Bot commented on DRILL-6364:
---------------------------------------
Github user sohami commented on a diff in the pull request:
https://github.com/apache/drill/pull/1241#discussion_r185095442
--- Diff: exec/java-exec/src/main/resources/rest/index.ftl ---
@@ -252,33 +255,129 @@
timeout = setTimeout(reloadStatus, refreshTime);
}
- function fillStatus(data,size) {
- var status_map = (data.responseJSON);
- for (i = 1; i <= size; i++) {
- var address =
$("#row-"+i).find("#address").contents().get(0).nodeValue;
- address = address.trim();
- var port = $("#row-"+i).find("#port").html();
- var key = address+"-"+port;
+ function fillStatus(dataResponse,size) {
+ var status_map = (dataResponse.responseJSON);
+ //In case localhost has gone down (i.e. we don't know status
from ZK)
+ if (typeof status_map == 'undefined') {
+ //Query other nodes for state details
+ for (j = 1; j <= size; j++) {
+ if ($("#row-"+j).find("#current").html() == "Current") {
+ continue; //Skip LocalHost
+ }
+ var address =
$("#row-"+j).find("#address").contents().get(0).nodeValue.trim();
+ var restPort =
$("#row-"+j).find("#httpPort").contents().get(0).nodeValue.trim();
+ var altStateUrl = location.protocol + "//" +
address+":"+restPort + "/state";
+ var goatResponse = $.getJSON(altStateUrl)
+ .done(function(stateDataJson) {
+ //Update Status & Buttons for alternate stateData
+ if (typeof status_map == 'undefined') {
+ status_map = (stateDataJson); //Update
+ updateStatusAndShutdown(stateDataJson);
+ }
+ });
+ //Don't loop any more
+ if (typeof status_map != 'undefined') {
+ break;
+ }
+ }
+ } else {
+ updateStatusAndShutdown(status_map);
+ }
+ }
+
+ function updateStatusAndShutdown(status_map) {
+ let bitMap = {};
+ if (typeof status_map != 'undefined') {
+ for (var k in status_map) {
+ bitMap[k] = status_map[k];
+ }
+ }
+ for (i = 1; i <= size; i++) {
+ let key = "";
+ if ($("#row-"+i).find("#stateKey").length > 0) { //Check if
newBit that has no stateKey
+ key = $("#row-"+i).find("#stateKey").textContent;
+ } else {
+ let address =
$("#row-"+i).find("#address").contents().get(0).nodeValue.trim();
+ let port = $("#row-"+i).find("#httpPort").html();
+ key = address+"-"+port;
+ }
- if (status_map[key] == null) {
+ if (typeof status_map == 'undefined') {
+ $("#row-"+i).find("#status").text(nAText);
+
$("#row-"+i).find("#shutdown").prop('disabled',true).css('opacity',0.5);
+ $("#row-"+i).find("#queriesCount").text("");
+ } else if (status_map[key] == null) {
$("#row-"+i).find("#status").text("OFFLINE");
$("#row-"+i).find("#shutdown").prop('disabled',true).css('opacity',0.5);
$("#row-"+i).find("#queriesCount").text("");
- }
- else {
+ } else {
if (status_map[key] == "ONLINE") {
$("#row-"+i).find("#status").text(status_map[key]);
-
$("#row-"+i).find("#shutdown").prop('disabled',false).css('opacity',1.0);
- }
- else {
+ <#if ( model.shouldShowAdminInfo() ||
!model.isAuthEnabled() ) >
+ if ( location.protocol != "https" ||
($("#row-"+i).find("#current").html() == "Current") ) {
+
$("#row-"+i).find("#shutdown").prop('disabled',false).css('opacity',1.0).css('cursor','pointer');
+ }
+ </#if>
+ } else {
if ($("#row-"+i).find("#current").html() == "Current")
{
fillQueryCount(i);
}
$("#row-"+i).find("#status").text(status_map[key]);
}
+ //Removing accounted key
+ delete bitMap[key];
}
- }
+ }
+ //If bitMap is not empty, then new bits have been discovered!
+ listNewDrillbits(bitMap, status_map);
+ }
+
+ //Add new Bits for listing
+ function listNewDrillbits(newBits, status_map) {
+ let newBitList = Object.keys(newBits);
+ let tableRef =
document.getElementById('bitTable').getElementsByTagName('tbody')[0];
+ let bitId = size;
+ for (i = 0; i < newBitList.length; i++) {
+ var displayNodeName = newBitList[i].substring(0,
newBitList[i].lastIndexOf("-"));
--- End diff --
please store the `lastIndexOf("-")` into a variable and use that variable
instead.
> WebUI does not cleanly handle shutdown and state toggling when Drillbits go
> on and offline
> ------------------------------------------------------------------------------------------
>
> Key: DRILL-6364
> URL: https://issues.apache.org/jira/browse/DRILL-6364
> Project: Apache Drill
> Issue Type: Bug
> Components: Web Server
> Reporter: Kunal Khatua
> Assignee: Kunal Khatua
> Priority: Major
> Fix For: 1.14.0
>
>
> When the webpage is loaded the first time, the shutdown button is enabled by
> default, which might not be correct, since scenarios like HTTPS, etc does not
> support this for remote bits. (i.e the user needs to navigate to that node's
> UI for shutting it down).
> Similarly, when a previously unseen Drillbit comes online, the node will not
> be rendered until the page is refreshed by the user.
> Lastly, if the node from whom the UI page was served goes down, the status
> update for the rest of the cluster is not updated.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)