You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/07/11 12:45:56 UTC
[47/50] [abbrv] tinkerpop git commit: TINKERPOP-1686 Made
MutableMetrics thread-safe for nested results and counts
TINKERPOP-1686 Made MutableMetrics thread-safe for nested results and counts
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d136455b
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d136455b
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d136455b
Branch: refs/heads/TINKERPOP-1686
Commit: d136455b83955a81440d97b5fa26bd5d60f23f4b
Parents: c536435
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 28 07:55:51 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jul 11 08:04:55 2017 -0400
----------------------------------------------------------------------
.../gremlin/process/traversal/util/ImmutableMetrics.java | 8 ++++++--
.../gremlin/process/traversal/util/MutableMetrics.java | 5 ++++-
2 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d136455b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ImmutableMetrics.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ImmutableMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ImmutableMetrics.java
index a563bbd..d2b1430 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ImmutableMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ImmutableMetrics.java
@@ -23,11 +23,15 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
/**
+ * A {@link Metrics} implementation that cannot be modified.
+ *
* @author Bob Briody (http://bobbriody.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
*/
public class ImmutableMetrics implements Metrics, Serializable {
@@ -35,9 +39,9 @@ public class ImmutableMetrics implements Metrics, Serializable {
protected String id;
protected String name;
- protected Map<String, AtomicLong> counts = new HashMap<>();
+ protected Map<String, AtomicLong> counts = new ConcurrentHashMap<>();
protected long durationNs = 0l;
- protected final Map<String, Object> annotations = new HashMap<>();
+ protected final Map<String, Object> annotations = new ConcurrentHashMap<>();
protected final Map<String, ImmutableMetrics> nested = new LinkedHashMap<>();
protected ImmutableMetrics() {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d136455b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
index 34fa370..b3ee5f0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
@@ -27,7 +27,10 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
/**
+ * A {@link Metrics} implementation that can be modified.
+ *
* @author Bob Briody (http://bobbriody.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
*/
public class MutableMetrics extends ImmutableMetrics implements Cloneable {
@@ -61,7 +64,7 @@ public class MutableMetrics extends ImmutableMetrics implements Cloneable {
other.getNested().forEach(nested -> this.addNested(new MutableMetrics(nested)));
}
- public void addNested(final MutableMetrics metrics) {
+ public synchronized void addNested(final MutableMetrics metrics) {
if (finalized) throw new IllegalStateException("Metrics have been finalized and cannot be modified");
this.nested.put(metrics.getId(), metrics);
}