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));
     }


Reply via email to