Repository: hadoop Updated Branches: refs/heads/branch-2 01acf3a3a -> 5670b542b
HADOOP-11891. OsSecureRandom should lazily fill its reservoir (asuresh) (cherry picked from commit f0db797be28ca221d540c6a3accd6bff9a7996fa) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5670b542 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5670b542 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5670b542 Branch: refs/heads/branch-2 Commit: 5670b542b833a00787b7a6d072c465bb6977abb8 Parents: 01acf3a Author: Arun Suresh <[email protected]> Authored: Thu Apr 30 13:59:43 2015 -0700 Committer: Arun Suresh <[email protected]> Committed: Thu Apr 30 14:02:33 2015 -0700 ---------------------------------------------------------------------- hadoop-common-project/hadoop-common/CHANGES.txt | 2 ++ .../hadoop/crypto/random/OsSecureRandom.java | 19 ++++--------------- 2 files changed, 6 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/5670b542/hadoop-common-project/hadoop-common/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 1e819bf..36122ab 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -151,6 +151,8 @@ Release 2.7.1 - UNRELEASED HADOOP-11802. DomainSocketWatcher thread terminates sometimes after there is an I/O error during requestShortCircuitShm (cmccabe) + HADOOP-11891. OsSecureRandom should lazily fill its reservoir (asuresh) + Release 2.7.0 - 2015-04-20 INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/5670b542/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/random/OsSecureRandom.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/random/OsSecureRandom.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/random/OsSecureRandom.java index fee4186..2010e6d 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/random/OsSecureRandom.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/random/OsSecureRandom.java @@ -58,6 +58,9 @@ public class OsSecureRandom extends Random implements Closeable, Configurable { private void fillReservoir(int min) { if (pos >= reservoir.length - min) { try { + if (stream == null) { + stream = new FileInputStream(new File(randomDevPath)); + } IOUtils.readFully(stream, reservoir, 0, reservoir.length); } catch (IOException e) { throw new RuntimeException("failed to fill reservoir", e); @@ -75,21 +78,7 @@ public class OsSecureRandom extends Random implements Closeable, Configurable { this.randomDevPath = conf.get( HADOOP_SECURITY_SECURE_RANDOM_DEVICE_FILE_PATH_KEY, HADOOP_SECURITY_SECURE_RANDOM_DEVICE_FILE_PATH_DEFAULT); - File randomDevFile = new File(randomDevPath); - - try { - close(); - this.stream = new FileInputStream(randomDevFile); - } catch (IOException e) { - throw new RuntimeException(e); - } - - try { - fillReservoir(0); - } catch (RuntimeException e) { - close(); - throw e; - } + close(); } @Override
