You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sr...@apache.org on 2010/09/03 20:52:58 UTC
svn commit: r992417 -
/mahout/trunk/math/src/main/java/org/apache/mahout/common/RandomWrapper.java
Author: srowen
Date: Fri Sep 3 18:52:58 2010
New Revision: 992417
URL: http://svn.apache.org/viewvc?rev=992417&view=rev
Log:
Attempt to please Hudson by forcing MersenneTwisterRNG to not use /dev/random-based seed, which causes hangs on Ubuntu.
Modified:
mahout/trunk/math/src/main/java/org/apache/mahout/common/RandomWrapper.java
Modified: mahout/trunk/math/src/main/java/org/apache/mahout/common/RandomWrapper.java
URL: http://svn.apache.org/viewvc/mahout/trunk/math/src/main/java/org/apache/mahout/common/RandomWrapper.java?rev=992417&r1=992416&r2=992417&view=diff
==============================================================================
--- mahout/trunk/math/src/main/java/org/apache/mahout/common/RandomWrapper.java (original)
+++ mahout/trunk/math/src/main/java/org/apache/mahout/common/RandomWrapper.java Fri Sep 3 18:52:58 2010
@@ -19,6 +19,9 @@ package org.apache.mahout.common;
import org.uncommons.maths.random.MersenneTwisterRNG;
import org.uncommons.maths.random.RepeatableRNG;
+import org.uncommons.maths.random.SecureRandomSeedGenerator;
+import org.uncommons.maths.random.SeedException;
+import org.uncommons.maths.random.SeedGenerator;
import java.nio.charset.Charset;
import java.util.Random;
@@ -26,6 +29,7 @@ import java.util.Random;
public final class RandomWrapper extends Random {
private static final byte[] STANDARD_SEED = "Mahout=Hadoop+ML".getBytes(Charset.forName("US-ASCII"));
+ private static final SeedGenerator SEED_GENERATOR = new SecureRandomSeedGenerator();
private static boolean testSeed;
@@ -50,7 +54,14 @@ public final class RandomWrapper extends
if (testSeed) {
return new MersenneTwisterRNG(STANDARD_SEED);
} else if (fixedSeed == null) {
- return new MersenneTwisterRNG();
+ // Force use of standard generator, and disallow use of those based on /dev/random since
+ // it causes hangs on Ubuntu
+ try {
+ return new MersenneTwisterRNG(SEED_GENERATOR);
+ } catch (SeedException se) {
+ // Can't happen
+ throw new IllegalStateException(se);
+ }
} else {
return new MersenneTwisterRNG(RandomUtils.longSeedtoBytes(fixedSeed));
}