[ 
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)

Reply via email to