[ https://issues.apache.org/jira/browse/HDFS-1835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Carrino updated HDFS-1835: ------------------------------- Status: Patch Available (was: Open) Index: src/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java =================================================================== --- src/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java (revision 1094852) +++ src/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java (working copy) @@ -652,13 +652,7 @@ LOG.warn("Could not find ip address of \"default\" inteface."); } - int rand = 0; - try { - rand = SecureRandom.getInstance("SHA1PRNG").nextInt(Integer.MAX_VALUE); - } catch (NoSuchAlgorithmException e) { - LOG.warn("Could not use SecureRandom"); - rand = R.nextInt(Integer.MAX_VALUE); - } + int rand = new SecureRandom().nextInt(Integer.MAX_VALUE); dnReg.storageID = "DS-" + rand + "-"+ ip + "-" + dnReg.getPort() + "-" + System.currentTimeMillis(); } > 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 > > 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