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