[
https://issues.apache.org/jira/browse/HDFS-3456?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13286117#comment-13286117
]
Colin Patrick McCabe commented on HDFS-3456:
--------------------------------------------
I have a feeling that people will keep running into these kind of bugs where
they typecast between long and int, and screw it up. That was the motivation
for creating nextRandomLong.
Regarding version 3 of the patch: It's true that nextRandomDouble() only gives
53 bits of randomness, but the JavaDoc for my helper function clearly states
that the resolution is limited by floating point rounding errors. I'm assuming
that was the "bug" you referred to, since you didn't specify. Of course, it's
clear that people might not realize this limitation when they call the
function, so this is a legitimate cause for concern.
I don't have time to make this quite as perfect as I would like. So I will
stick to fixing the immediate problem, and not make nextRandomLong. If we see
any more bugs like this, then I guess we can link them back to here and
evaluate whether this decision was the right one.
> blockReportInterval is long value but when we take the random value it uses
> getRandom().nextInt,it is causing frequently BR
> ---------------------------------------------------------------------------------------------------------------------------
>
> Key: HDFS-3456
> URL: https://issues.apache.org/jira/browse/HDFS-3456
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: data-node
> Affects Versions: 2.0.0-alpha
> Reporter: Brahma Reddy Battula
> Assignee: Colin Patrick McCabe
> Priority: Minor
> Attachments: HDFS-3456.001.patch, HDFS-3456.002.patch,
> HDFS-3456.003.patch
>
>
> blockReportInterval is long value but when we take the random value it uses
> getRandom().nextInt.
> Due to this, offerService can throw exception as long may get rotated to
> negative value.
> So, block report may send very frequently.
> {code}
> if (resetBlockReportTime) {
> lastBlockReport = startTime -
> DFSUtil.getRandom().nextInt((int)(dnConf.blockReportInterval));
> resetBlockReportTime = false;
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira