[ https://issues.apache.org/jira/browse/DRILL-6364?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16459091#comment-16459091 ]
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_r185066896 --- 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 --- End diff -- Please store the reference to the row object and use it here and below rather than searching it every time. `let currentRow = $("#row-"+i)` Also comment looks wrong since `if condition `is checking for if there is any row with stateKey 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)