[ 
https://issues.apache.org/jira/browse/DRILL-5230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15851807#comment-15851807
 ] 

ASF GitHub Bot commented on DRILL-5230:
---------------------------------------

Github user paul-rogers commented on a diff in the pull request:

    https://github.com/apache/drill/pull/739#discussion_r99385390
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/TableBuilder.java
 ---
    @@ -56,6 +47,30 @@ public TableBuilder(final String[] columns) {
         sb.append("</tr>\n");
       }
     
    +  /**
    +   * Representation of a millisecond duration in a short readable text
    +   * @param millis  Duration in milliseconds
    +   * @return        Human-Readable Duration Time
    +   */
    +  public String shortDurationFormat(long millis) {
    +    long days = TimeUnit.MILLISECONDS.toDays(millis);
    +    long hours = TimeUnit.MILLISECONDS.toHours(millis) - 
TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(millis));
    +    long minutes = TimeUnit.MILLISECONDS.toMinutes(millis) - 
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis));
    +    long seconds = TimeUnit.MILLISECONDS.toSeconds(millis) - 
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis));
    +    long milliSeconds = millis - 
TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(millis));
    +    String formattedDuration = "";
    +    if (days >= 1) {
    +      formattedDuration = days + "d" + hours + "h" + minutes + "m";
    +    } else if (hours >= 1) {
    +      formattedDuration = hours + "h" + minutes + "m";
    +    } else if (minutes >= 1) {
    +      formattedDuration = minutes + "m" + seconds + "s";
    +    } else {
    +      formattedDuration = seconds + "." + milliSeconds + "s";
    +    }
    +    return formattedDuration;
    --- End diff --
    
    A nit, but the code is clearer if you do:
    
    ```
    if (cond1) {
        return expr1;
    } else if (cond2) {
        return expr2;
    } else {
        return expr3;
    }
    ```
    
    The above eliminates the temp variable and makes it very clear what is 
happening.


> Translation of millisecond duration into hours is incorrect
> -----------------------------------------------------------
>
>                 Key: DRILL-5230
>                 URL: https://issues.apache.org/jira/browse/DRILL-5230
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Web Server
>    Affects Versions: 1.9.0
>            Reporter: Kunal Khatua
>              Labels: easyfix, ready-to-commit
>             Fix For: 1.10.0
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> The method 
> {code:JAVA}org.apache.drill.exec.server.rest.profile.TableBuilder.appendMillis(long,
>  String){code}
> has a bug where the human readable translation of a 1+ hr duration in 
> milliseconds is reported incorrectly. 
> This has to do with the {code:JAVA}SimpleDateFormat.format() {code} method 
> incorectly translating it. 
> For e.g.
> {code:JAVA}
> long x = 4545342L; //1 hour 15 min 45.342 sec
> public void appendMillis(x, null);
> {code}
> This formats the value as {noformat}17h15m{noformat} instead of 
> {noformat}1h15m{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to