HADOOP-11891. OsSecureRandom should lazily fill its reservoir (asuresh)

(cherry picked from commit f0db797be2)
This commit is contained in:
Arun Suresh 2015-04-30 13:59:43 -07:00
parent 01acf3a3af
commit 5670b542b8
2 changed files with 6 additions and 15 deletions

View File

@ -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

View File

@ -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;
}
}
@Override