You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/09/30 21:32:52 UTC
incubator-tinkerpop git commit: fixed clone() (thus,
threading) bugs in GroupCountStep, GroupStep, and TreeStep.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/tp30 77f374df8 -> c087fbcc8
fixed clone() (thus, threading) bugs in GroupCountStep, GroupStep, and TreeStep.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/c087fbcc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/c087fbcc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/c087fbcc
Branch: refs/heads/tp30
Commit: c087fbcc8fb2530ffba0f2d365785dfadc27bed4
Parents: 77f374d
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Sep 30 13:25:39 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Sep 30 13:25:39 2015 -0600
----------------------------------------------------------------------
CHANGELOG.asciidoc | 2 +-
.../traversal/step/map/GroupCountStep.java | 20 ++++++++++++------
.../process/traversal/step/map/GroupStep.java | 22 +++++++++++++-------
.../process/traversal/step/map/TreeStep.java | 14 +++++++------
4 files changed, 38 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c087fbcc/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 3ae1142..d0df1f2 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,7 +25,7 @@ image::https://raw.githubusercontent.com/apache/incubator-tinkerpop/master/docs/
TinkerPop 3.0.2 (NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-* Fixed a `clone()` bug in `RepeatStep` and `TraversalRing`.
+* Fixed a `clone()` bug in `RepeatStep`, `TreeStep`, `GroupCountStep`, `GroupStep`, and `TraversalRing`.
* Fixed a thread context bug in `TinkerGraphComputer`.
* Improved session closing for transactional graphs during shutdown of Gremlin Server.
* Fixed id parameter used in tests for `GroovyStoreTest` and `GroovyRepeatTest` to not be treated as an embedded string.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c087fbcc/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStep.java
index bfd1e34..7f3904e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStep.java
@@ -36,7 +36,12 @@ import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier;
import java.io.Serializable;
-import java.util.*;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.function.BiFunction;
/**
@@ -49,7 +54,7 @@ public final class GroupCountStep<S, E> extends ReducingBarrierStep<S, Map<E, Lo
public GroupCountStep(final Traversal.Admin traversal) {
super(traversal);
this.setSeedSupplier(HashMapSupplier.instance());
- this.setBiFunction(new GroupCountBiFunction());
+ this.setBiFunction(new GroupCountBiFunction(this));
}
@@ -78,6 +83,7 @@ public final class GroupCountStep<S, E> extends ReducingBarrierStep<S, Map<E, Lo
final GroupCountStep<S, E> clone = (GroupCountStep<S, E>) super.clone();
if (null != this.groupTraversal)
clone.groupTraversal = clone.integrateChild(this.groupTraversal.clone());
+ clone.setBiFunction(new GroupCountBiFunction<>(clone));
return clone;
}
@@ -107,15 +113,18 @@ public final class GroupCountStep<S, E> extends ReducingBarrierStep<S, Map<E, Lo
///////////
- private class GroupCountBiFunction implements BiFunction<Map<E, Long>, Traverser<S>, Map<E, Long>>, Serializable {
+ private static class GroupCountBiFunction<S, E> implements BiFunction<Map<E, Long>, Traverser<S>, Map<E, Long>>, Serializable {
- private GroupCountBiFunction() {
+ private final GroupCountStep<S, E> groupCountStep;
+
+ private GroupCountBiFunction(final GroupCountStep<S, E> groupCountStep) {
+ this.groupCountStep = groupCountStep;
}
@Override
public Map<E, Long> apply(final Map<E, Long> mutatingSeed, final Traverser<S> traverser) {
- MapHelper.incr(mutatingSeed, TraversalUtil.applyNullable(traverser.asAdmin(), GroupCountStep.this.groupTraversal), traverser.bulk());
+ MapHelper.incr(mutatingSeed, TraversalUtil.applyNullable(traverser.asAdmin(), this.groupCountStep.groupTraversal), traverser.bulk());
return mutatingSeed;
}
}
@@ -170,5 +179,4 @@ public final class GroupCountStep<S, E> extends ReducingBarrierStep<S, Map<E, Lo
return INSTANCE;
}
}
-
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c087fbcc/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
index 558c9ae..5dc54c6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
@@ -39,7 +39,13 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
import java.io.Serializable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.function.BiFunction;
import java.util.function.Supplier;
@@ -57,7 +63,7 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
public GroupStep(final Traversal.Admin traversal) {
super(traversal);
this.setSeedSupplier((Supplier) new GroupMapSupplier());
- this.setBiFunction((BiFunction) new GroupBiFunction());
+ this.setBiFunction(new GroupBiFunction(this));
}
@Override
@@ -106,6 +112,7 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
clone.valueTraversal = clone.integrateChild(this.valueTraversal.clone());
if (null != this.reduceTraversal)
clone.reduceTraversal = clone.integrateChild(this.reduceTraversal.clone());
+ clone.setBiFunction(new GroupBiFunction<>((GroupStep) clone));
return clone;
}
@@ -141,16 +148,18 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
///////////
- private class GroupBiFunction implements BiFunction<Map<K, Collection<V>>, Traverser.Admin<S>, Map<K, Collection<V>>>, Serializable {
+ private static class GroupBiFunction<S, K, V> implements BiFunction<Map<K, Collection<V>>, Traverser.Admin<S>, Map<K, Collection<V>>>, Serializable {
- private GroupBiFunction() {
+ private final GroupStep<S, K, V, ?> groupStep;
+ private GroupBiFunction(final GroupStep<S, K, V, ?> groupStep) {
+ this.groupStep = groupStep;
}
@Override
public Map<K, Collection<V>> apply(final Map<K, Collection<V>> mutatingSeed, final Traverser.Admin<S> traverser) {
- final K key = TraversalUtil.applyNullable(traverser, GroupStep.this.keyTraversal);
- final V value = TraversalUtil.applyNullable(traverser, GroupStep.this.valueTraversal);
+ final K key = TraversalUtil.applyNullable(traverser, this.groupStep.keyTraversal);
+ final V value = TraversalUtil.applyNullable(traverser, this.groupStep.valueTraversal);
Collection<V> values = mutatingSeed.get(key);
if (null == values) {
values = new BulkSet<>();
@@ -273,5 +282,4 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
return StringFactory.mapReduceString(this, this.getMemoryKey());
}
}
-
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c087fbcc/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
index c987ffb..3de0a9d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
@@ -55,7 +55,7 @@ public final class TreeStep<S> extends ReducingBarrierStep<S, Tree> implements M
public TreeStep(final Traversal.Admin traversal) {
super(traversal);
this.setSeedSupplier((Supplier) TreeSupplier.instance());
- this.setBiFunction(new TreeBiFunction());
+ this.setBiFunction(new TreeBiFunction(this));
}
@@ -84,6 +84,7 @@ public final class TreeStep<S> extends ReducingBarrierStep<S, Tree> implements M
final TreeStep<S> clone = (TreeStep<S>) super.clone();
clone.traversalRing = this.traversalRing.clone();
clone.getLocalChildren().forEach(clone::integrateChild);
+ clone.setBiFunction(new TreeBiFunction<>(clone));
return clone;
}
@@ -115,10 +116,12 @@ public final class TreeStep<S> extends ReducingBarrierStep<S, Tree> implements M
///////////
- private class TreeBiFunction implements BiFunction<Tree, Traverser<S>, Tree>, Serializable {
+ private static class TreeBiFunction<S> implements BiFunction<Tree, Traverser<S>, Tree>, Serializable {
- private TreeBiFunction() {
+ private final TreeStep<S> treeStep;
+ private TreeBiFunction(final TreeStep<S> treeStep) {
+ this.treeStep = treeStep;
}
@Override
@@ -126,12 +129,12 @@ public final class TreeStep<S> extends ReducingBarrierStep<S, Tree> implements M
Tree depth = mutatingSeed;
final Path path = traverser.path();
for (int i = 0; i < path.size(); i++) {
- final Object object = TraversalUtil.apply(path.<Object>get(i), TreeStep.this.traversalRing.next());
+ final Object object = TraversalUtil.apply(path.<Object>get(i), this.treeStep.traversalRing.next());
if (!depth.containsKey(object))
depth.put(object, new Tree<>());
depth = (Tree) depth.get(object);
}
- TreeStep.this.traversalRing.reset();
+ this.treeStep.traversalRing.reset();
return mutatingSeed;
}
}
@@ -182,5 +185,4 @@ public final class TreeStep<S> extends ReducingBarrierStep<S, Tree> implements M
return INSTANCE;
}
}
-
}
\ No newline at end of file