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 2018/04/24 12:10:45 UTC

[1/6] tinkerpop git commit: TINKERPOP-1595 Removed usage of deprecated graph computer method

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1595 [created] 7869eb6f2


TINKERPOP-1595 Removed usage of deprecated graph computer method


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d8f55c09
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d8f55c09
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d8f55c09

Branch: refs/heads/TINKERPOP-1595
Commit: d8f55c09e318220400647d410923e1af97e7cca9
Parents: 268423d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 07:59:58 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Apr 24 07:59:58 2018 -0400

----------------------------------------------------------------------
 .../process/computer/traversal/step/map/VertexProgramStep.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d8f55c09/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
index d005940..b32ef82 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
@@ -72,7 +72,7 @@ public abstract class VertexProgramStep extends AbstractStep<ComputerResult, Com
                 final Traverser.Admin<ComputerResult> traverser = this.starts.next();
                 final Graph graph = traverser.get().graph();
                 final Memory memory = traverser.get().memory();
-                future = this.generateComputer(graph).program(this.generateProgram(graph, memory)).submit();
+                future = this.getComputer().apply(graph).program(this.generateProgram(graph, memory)).submit();
                 final ComputerResult result = future.get();
                 this.processMemorySideEffects(result.memory());
                 return traverser.split(result, this);


[5/6] tinkerpop git commit: TINKERPOP-1595 Changed vertex program serialization to base64 encoded

Posted by sp...@apache.org.
TINKERPOP-1595 Changed vertex program serialization to base64 encoded

This approach shows to be faster than writing the bytes as an array of string values and deserializing with regex based parsing.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/318eab50
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/318eab50
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/318eab50

Branch: refs/heads/TINKERPOP-1595
Commit: 318eab50defedf8717220161cde7690ca76bb973
Parents: d61765e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 08:06:56 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Apr 24 08:06:56 2018 -0400

----------------------------------------------------------------------
 .../process/computer/util/VertexProgramHelper.java     | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/318eab50/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
index bc67866..a1c299d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
@@ -28,7 +28,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
 import org.apache.tinkerpop.gremlin.util.Serializer;
 
 import java.io.IOException;
-import java.util.Arrays;
+import java.util.Base64;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -64,8 +64,7 @@ public final class VertexProgramHelper {
         if (configuration instanceof AbstractConfiguration)
             ((AbstractConfiguration) configuration).setDelimiterParsingDisabled(true);
         try {
-            final String byteString = Arrays.toString(Serializer.serializeObject(object));
-            configuration.setProperty(key, byteString.substring(1, byteString.length() - 1));
+            configuration.setProperty(key, Base64.getEncoder().encodeToString(Serializer.serializeObject(object)));
         } catch (final IOException e) {
             throw new IllegalArgumentException(e.getMessage(), e);
         }
@@ -73,12 +72,8 @@ public final class VertexProgramHelper {
 
     public static <T> T deserialize(final Configuration configuration, final String key) {
         try {
-            final String[] stringBytes = configuration.getString(key).split(",");
-            byte[] bytes = new byte[stringBytes.length];
-            for (int i = 0; i < stringBytes.length; i++) {
-                bytes[i] = Byte.valueOf(stringBytes[i].trim());
-            }
-            return (T) Serializer.deserializeObject(bytes);
+
+            return (T) Serializer.deserializeObject(Base64.getDecoder().decode(configuration.getString(key).getBytes()));
         } catch (final IOException | ClassNotFoundException e) {
             throw new IllegalArgumentException(e.getMessage(), e);
         }


[2/6] tinkerpop git commit: TINKERPOP-1595 Removed stream() usage

Posted by sp...@apache.org.
TINKERPOP-1595 Removed stream() usage


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d11d3b81
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d11d3b81
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d11d3b81

Branch: refs/heads/TINKERPOP-1595
Commit: d11d3b816bec848679169fa261c75d4e8c172974
Parents: d8f55c0
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 08:00:48 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Apr 24 08:00:48 2018 -0400

----------------------------------------------------------------------
 .../process/computer/traversal/TraversalVertexProgram.java  | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d11d3b81/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
index 3cb4d00..40417cc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
@@ -175,12 +175,11 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
                         this.traversal.get().getParent().asStep().getNextStep() instanceof EmptyStep ||  // same as above, but if using TraversalVertexProgramStep directly
                         (this.traversal.get().getParent().asStep().getNextStep() instanceof ProfileStep && // same as above, but needed for profiling
                                 this.traversal.get().getParent().asStep().getNextStep().getNextStep() instanceof ComputerResultStep));
+
         // determine how to store halted traversers
-        this.haltedTraverserStrategy = ((HaltedTraverserStrategy) this.traversal.get().getStrategies().toList()
-                .stream()
-                .filter(strategy -> strategy instanceof HaltedTraverserStrategy)
-                .findAny()
-                .orElse(HaltedTraverserStrategy.reference()));
+        final Iterator<?> itty = IteratorUtils.filter(this.traversal.get().getStrategies().toList(), strategy -> strategy instanceof HaltedTraverserStrategy).iterator();
+        this.haltedTraverserStrategy = itty.hasNext() ? (HaltedTraverserStrategy) itty.next() : HaltedTraverserStrategy.reference();
+
         // register traversal side-effects in memory
         this.memoryComputeKeys.addAll(MemoryTraversalSideEffects.getMemoryComputeKeys(this.traversal.get()));
         // register MapReducer memory compute keys


[6/6] tinkerpop git commit: TINKERPOP-1595 Updated changelog

Posted by sp...@apache.org.
TINKERPOP-1595 Updated changelog


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7869eb6f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7869eb6f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7869eb6f

Branch: refs/heads/TINKERPOP-1595
Commit: 7869eb6f2d1845d632ab0c74e1c62583086d6107
Parents: 318eab5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 08:10:12 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Apr 24 08:10:12 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7869eb6f/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 51c9f68..4a5aab6 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -24,6 +24,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 === TinkerPop 3.2.9 (Release Date: NOT OFFICIALLY RELEASED YET)
 
 * Bumped to httpclient 4.5.5.
+* Improved performance of `TraversalVertexProgram` and related infrastructure.
 * Improved performance of GraphSON deserialization of `Bytecode`.
 
 [[release-3-2-8]]


[4/6] tinkerpop git commit: TINKERPOP-1595 Refactored reflective lookups for clone()

Posted by sp...@apache.org.
TINKERPOP-1595 Refactored reflective lookups for clone()

Rather than iterate all methods to find clone() just call getMethod() and call that if found. Nothing seems to be exercising this bit of code in our test suite. I forced it by adding clone() temporarily to RangeBiOperator and it worked without issue. Not sure how else to test this.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d61765e8
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d61765e8
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d61765e8

Branch: refs/heads/TINKERPOP-1595
Commit: d61765e81636f1c019fc0dc1406cd80de53ce6fa
Parents: e92bd70
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 08:03:28 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Apr 24 08:03:28 2018 -0400

----------------------------------------------------------------------
 .../gremlin/process/computer/MemoryComputeKey.java   | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d61765e8/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
index 70adf3d..a9b1532 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
@@ -79,14 +79,17 @@ public final class MemoryComputeKey<A> implements Serializable, Cloneable {
     public MemoryComputeKey<A> clone() {
         try {
             final MemoryComputeKey<A> clone = (MemoryComputeKey<A>) super.clone();
-            for (final Method method : this.reducer.getClass().getMethods()) {
-                if (method.getName().equals("clone") && 0 == method.getParameterCount()) {
-                    clone.reducer = (BinaryOperator<A>) method.invoke(this.reducer);
-                    break;
-                }
+
+            try {
+                final Method cloneMethod = this.reducer.getClass().getMethod("clone");
+                if (cloneMethod != null)
+                    clone.reducer = (BinaryOperator<A>) cloneMethod.invoke(this.reducer);
+            } catch(Exception ignored) {
+
             }
+
             return clone;
-        } catch (final IllegalAccessException | InvocationTargetException | CloneNotSupportedException e) {
+        } catch (final CloneNotSupportedException e) {
             throw new IllegalStateException(e.getMessage(), e);
         }
     }


[3/6] tinkerpop git commit: TINKERPOP-1595 Removed stream() usage

Posted by sp...@apache.org.
TINKERPOP-1595 Removed stream() usage


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e92bd701
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e92bd701
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e92bd701

Branch: refs/heads/TINKERPOP-1595
Commit: e92bd70171a9de219bb16fc60f6edbabd3cbecbf
Parents: d11d3b8
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Apr 24 08:02:31 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Apr 24 08:02:31 2018 -0400

----------------------------------------------------------------------
 .../traversal/step/map/TraversalVertexProgramStep.java    | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e92bd701/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
index e866ce2..a49cc27 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
@@ -32,6 +32,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequire
 import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.util.Collections;
 import java.util.List;
@@ -73,11 +74,10 @@ public final class TraversalVertexProgramStep extends VertexProgramStep implemen
     public TraversalVertexProgram generateProgram(final Graph graph, final Memory memory) {
         final Traversal.Admin<?, ?> computerSpecificTraversal = this.computerTraversal.getPure();
         final TraversalStrategies computerSpecificStrategies = this.getTraversal().getStrategies().clone();
-        TraversalStrategies.GlobalCache.getStrategies(graph.getClass())
-                .toList()
-                .stream()
-                .filter(s -> s instanceof TraversalStrategy.ProviderOptimizationStrategy)
-                .forEach(computerSpecificStrategies::addStrategies);
+
+        IteratorUtils.filter(TraversalStrategies.GlobalCache.getStrategies(graph.getClass()).toList(),
+                s -> s instanceof TraversalStrategy.ProviderOptimizationStrategy).forEach(computerSpecificStrategies::addStrategies);
+
         computerSpecificTraversal.setStrategies(computerSpecificStrategies);
         computerSpecificTraversal.setSideEffects(new MemoryTraversalSideEffects(this.getTraversal().getSideEffects()));
         computerSpecificTraversal.setParent(this);