hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Carrino (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-1835) DataNode.setNewStorageID pulls entropy from /dev/random
Date Tue, 19 Apr 2011 17:42:06 GMT

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

John Carrino commented on HDFS-1835:
------------------------------------

The difference between my patch and the original only exists on the linux version of the jre.
 On windows it behaves the same. 

The original behavior was to seed a sha1prng with randomness from /dev/random.
The new  behavior is to just read from /dev/urandom.  Writing a test to tell these two cases
apart would be quite difficult.

I think the best way would involve turning off all entropy generation on linux and then consuming
all the entropy, then running DataNode.setNewStorageID to make sure it doesn't block.  

> DataNode.setNewStorageID pulls entropy from /dev/random
> -------------------------------------------------------
>
>                 Key: HDFS-1835
>                 URL: https://issues.apache.org/jira/browse/HDFS-1835
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: data-node
>    Affects Versions: 0.20.2
>            Reporter: John Carrino
>             Fix For: 0.22.0
>
>         Attachments: DataNode.patch
>
>   Original Estimate: 10m
>  Remaining Estimate: 10m
>
> DataNode.setNewStorageID uses SecureRandom.getInstance("SHA1PRNG") which always pulls
fresh entropy.
> It wouldn't be so bad if this were only the 120 bits needed by sha1, but the default
impl of SecureRandom actually uses a BufferedInputStream around /dev/random and pulls 1024
bits of entropy for this one call.
> If you are on a system without much entropy coming in, this call can block and block
others.
> Can we just change this to use "new SecureRandom().nextInt(Integer.MAX_VALUE)" instead?

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message