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

Vinayakumar B commented on HDFS-6355:
-------------------------------------

Changes looks good. 
One small doubt.
{code}+    long timeLeft = Math.max(1L,
+        currentPeriodStart + scanPeriod - Time.monotonicNow());{code}
Here since we already use monotonicNow(), which is relative to jvm startup, I 
don't think we will get a negative value here and hence no need to take a 
max(..). 

Anyway, there is no harm if its there, if you feel its fine, then I am ok with 
it :), +1

> Fix divide-by-zero, improper use of wall-clock time in BlockPoolSliceScanner
> ----------------------------------------------------------------------------
>
>                 Key: HDFS-6355
>                 URL: https://issues.apache.org/jira/browse/HDFS-6355
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 2.4.0
>            Reporter: Colin Patrick McCabe
>            Assignee: Colin Patrick McCabe
>         Attachments: HDFS-6355.001.patch
>
>
> BlockPoolSliceScanner uses {{Time.now}} to calculate an interval.  But this 
> is incorrect, since if the wall-clock time changes, we will end up setting 
> the scan periods to a shorter or longer time than we configured.
> There is also a case where we may divide by zero if we get unlucky, because 
> we calculate an interval and divide by it, without checking whether the 
> interval is 0 milliseconds.  This would produce an {{ArithmeticException}} 
> since we are using longs.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to