You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2018/04/20 05:05:33 UTC
calcite git commit: [CALCITE-2267] Thread-safe generation of
AbstractRelNode.id (Zhong Yu)
Repository: calcite
Updated Branches:
refs/heads/master d73f24b64 -> f5b041ff4
[CALCITE-2267] Thread-safe generation of AbstractRelNode.id (Zhong Yu)
Close apache/calcite#670
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/f5b041ff
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/f5b041ff
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/f5b041ff
Branch: refs/heads/master
Commit: f5b041ff46710fca7d104385b7f917384e4a7f1a
Parents: d73f24b
Author: yuzhong <yu...@alibaba-inc.com>
Authored: Fri Apr 20 10:53:46 2018 +0800
Committer: Julian Hyde <jh...@apache.org>
Committed: Thu Apr 19 20:29:12 2018 -0700
----------------------------------------------------------------------
.../main/java/org/apache/calcite/rel/AbstractRelNode.java | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/f5b041ff/core/src/main/java/org/apache/calcite/rel/AbstractRelNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/AbstractRelNode.java b/core/src/main/java/org/apache/calcite/rel/AbstractRelNode.java
index 3b6be13..6518067 100644
--- a/core/src/main/java/org/apache/calcite/rel/AbstractRelNode.java
+++ b/core/src/main/java/org/apache/calcite/rel/AbstractRelNode.java
@@ -52,6 +52,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* Base class for every relational expression ({@link RelNode}).
@@ -59,11 +60,8 @@ import java.util.Set;
public abstract class AbstractRelNode implements RelNode {
//~ Static fields/initializers ---------------------------------------------
- // TODO jvs 10-Oct-2003: Make this thread safe. Either synchronize, or
- // keep this per-VolcanoPlanner.
-
/** Generator for {@link #id} values. */
- static int nextId = 0;
+ private static final AtomicInteger NEXT_ID = new AtomicInteger(0);
private static final Logger LOGGER = CalciteTrace.getPlannerTracer();
@@ -95,7 +93,7 @@ public abstract class AbstractRelNode implements RelNode {
/**
* unique id of this object -- for debugging
*/
- protected int id;
+ protected final int id;
/**
* The RelTraitSet that describes the traits of this RelNode.
@@ -112,7 +110,7 @@ public abstract class AbstractRelNode implements RelNode {
assert cluster != null;
this.cluster = cluster;
this.traitSet = traitSet;
- this.id = nextId++;
+ this.id = NEXT_ID.getAndIncrement();
this.digest = getRelTypeName() + "#" + id;
this.desc = digest;
LOGGER.trace("new {}", digest);