You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by lc...@apache.org on 2016/07/07 13:46:32 UTC

[3/4] incubator-beam git commit: [BEAM-408] - Fixes ProxyInvocationHandler uses inefficient Math.random() for random int

[BEAM-408] - Fixes ProxyInvocationHandler uses inefficient Math.random() for random int

For more information: https://issues.apache.org/jira/browse/BEAM-408


Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/708244bf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/708244bf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/708244bf

Branch: refs/heads/master
Commit: 708244bf91b4079690bbaed0c063b70e76a95794
Parents: 1cb898f
Author: Lucas Amorim <lu...@protonmail.com>
Authored: Mon Jul 4 15:47:39 2016 -0700
Committer: Luke Cwik <lc...@visitor-lcwik.wat.corp.google.com>
Committed: Thu Jul 7 09:07:15 2016 -0400

----------------------------------------------------------------------
 .../build-tools/src/main/resources/beam/findbugs-filter.xml    | 6 ------
 .../org/apache/beam/sdk/options/ProxyInvocationHandler.java    | 4 +++-
 2 files changed, 3 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/708244bf/sdks/java/build-tools/src/main/resources/beam/findbugs-filter.xml
----------------------------------------------------------------------
diff --git a/sdks/java/build-tools/src/main/resources/beam/findbugs-filter.xml b/sdks/java/build-tools/src/main/resources/beam/findbugs-filter.xml
index a1f0e8a..d151315 100644
--- a/sdks/java/build-tools/src/main/resources/beam/findbugs-filter.xml
+++ b/sdks/java/build-tools/src/main/resources/beam/findbugs-filter.xml
@@ -194,12 +194,6 @@
     <!--Parameter must be non-null but is marked as nullable-->
   </Match>
   <Match>
-    <Class name="org.apache.beam.sdk.options.ProxyInvocationHandler"/>
-    <Method name="&lt;init&gt;"/>
-    <Bug pattern="DM_NEXTINT_VIA_NEXTDOUBLE"/>
-    <!--Use the nextInt method of Random rather than nextDouble to generate a random integer-->
-  </Match>
-  <Match>
     <Class name="org.apache.beam.sdk.runners.DirectPipelineRunner"/>
     <Method name="&lt;init&gt;"/>
     <Bug pattern="DMI_RANDOM_USED_ONLY_ONCE"/>

http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/708244bf/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ProxyInvocationHandler.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ProxyInvocationHandler.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ProxyInvocationHandler.java
index e3d763b..0c10c2f 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ProxyInvocationHandler.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ProxyInvocationHandler.java
@@ -66,6 +66,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Random;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
@@ -93,7 +94,8 @@ class ProxyInvocationHandler implements InvocationHandler, HasDisplayData {
    * No two instances of this class are considered equivalent hence we generate a random hash code
    * between 0 and {@link Integer#MAX_VALUE}.
    */
-  private final int hashCode = (int) (Math.random() * Integer.MAX_VALUE);
+  private final int hashCode = (RANDOM.nextInt() * Integer.MAX_VALUE);
+  private static final Random RANDOM = new Random();
   private final Set<Class<? extends PipelineOptions>> knownInterfaces;
   private final ClassToInstanceMap<PipelineOptions> interfaceToProxyCache;
   private final Map<String, BoundValue> options;