[ 
https://issues.apache.org/jira/browse/HBASE-2269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stack resolved HBASE-2269.
--------------------------

       Resolution: Fixed
    Fix Version/s: 0.21.0
                   0.20.4
     Hadoop Flags: [Reviewed]

I committed your latter suggestion Tatsuya:

{code}
Index: src/test/org/apache/hadoop/hbase/PerformanceEvaluation.java
===================================================================
--- src/test/org/apache/hadoop/hbase/PerformanceEvaluation.java (revision 
921459)
+++ src/test/org/apache/hadoop/hbase/PerformanceEvaluation.java (working copy)
@@ -666,7 +666,15 @@
    * Subclass to particularize what happens per row.
    */
   static abstract class Test {
-    protected final Random rand = new Random(System.currentTimeMillis());
+    // Below is make it so when Tests are all running in the one
+    // jvm, that they each have a differently seeded Random. 
+    private static final Random randomSeed =
+      new Random(System.currentTimeMillis());
+    private static long nextRandomSeed() {
+      return randomSeed.nextLong();
+    }
+    protected final Random rand = new Random(nextRandomSeed());
+
     protected final int startRow;
     protected final int perClientRunRows;
     protected final int totalRows;
{code}

Thanks for the fix.

> PerformanceEvaluation "--nomapred" may assign duplicate random seed over 
> multiple testing threads
> -------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-2269
>                 URL: https://issues.apache.org/jira/browse/HBASE-2269
>             Project: Hadoop HBase
>          Issue Type: Bug
>          Components: test
>    Affects Versions: 0.20.3
>         Environment: Any operating system
>            Reporter: Tatsuya Kawano
>            Priority: Minor
>             Fix For: 0.20.4, 0.21.0
>
>
> When you use PerformanceEvaluation with "--nomapred" option, you will end up 
> having the same random seeds assigned over multiple testing threads. So 
> you'll get inaccurate results from "random~~" tests.
> {code:title=PerformanceEvaluation.java}
> 542:  abstract class Test {
> 543:     protected final Random rand = new Random(System.currentTimeMillis());
> {code}
> Milliseconds won't be sufficient; today's JVM is much faster to create 
> multiple Test objects in one millisecond. You might want to use something 
> like "{{super.hashCode()}}" instead. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to