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] [Updated] (HDFS-1835) DataNode.setNewStorageID pulls entropy from /dev/random
Date Tue, 19 Apr 2011 04:46:05 GMT

     [ 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

Mime
View raw message