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="<init>"/>
- <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="<init>"/>
<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;