[24/45] tinkerpop git commit: TINKERPOP-1996 Fixed bad test assertions after last body of changes.
TINKERPOP-1996 Fixed bad test assertions after last body of changes. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/94233970 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/94233970 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/94233970 Branch: refs/heads/TINKERPOP-1774 Commit: 94233970f8dc7c5d7b8fdc4b9e7bdbf0ff905c25 Parents: ff71c6a Author: Stephen Mallette Authored: Fri Jul 20 06:31:42 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 06:31:42 2018 -0400 -- .../gremlin/process/traversal/step/map/WriteTest.java | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/94233970/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteTest.java index 55e6f9c..9798095 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteTest.java @@ -65,7 +65,7 @@ public abstract class WriteTest extends AbstractGremlinProcessTest { final Traversal traversal = get_g_io_writeXkryoX(fileToWrite); printTraversalForm(traversal); -assertFalse(traversal.hasNext()); +traversal.iterate(); assertThat(f.length() > 0, is(true)); } @@ -81,7 +81,7 @@ public abstract class WriteTest extends AbstractGremlinProcessTest { final Traversal traversal = get_g_io_write_withXwriter_gryoX(fileToWrite); printTraversalForm(traversal); -assertFalse(traversal.hasNext()); +traversal.iterate(); assertThat(f.length() > 0, is(true)); } @@ -97,7 +97,7 @@ public abstract class WriteTest extends AbstractGremlinProcessTest { final Traversal traversal = get_g_io_writeXjsonX(fileToWrite); printTraversalForm(traversal); -assertFalse(traversal.hasNext()); +traversal.iterate(); assertThat(f.length() > 0, is(true)); } @@ -113,7 +113,7 @@ public abstract class WriteTest extends AbstractGremlinProcessTest { final Traversal traversal = get_g_io_write_withXwriter_graphsonX(fileToWrite); printTraversalForm(traversal); -assertFalse(traversal.hasNext()); +traversal.iterate(); assertThat(f.length() > 0, is(true)); } @@ -129,7 +129,7 @@ public abstract class WriteTest extends AbstractGremlinProcessTest { final Traversal traversal = get_g_io_writeXxmlX(fileToWrite); printTraversalForm(traversal); -assertFalse(traversal.hasNext()); +traversal.iterate(); assertThat(f.length() > 0, is(true)); }
[30/45] tinkerpop git commit: TINKERPOP-1996 Verification strategy to prevent io() from misuse
TINKERPOP-1996 Verification strategy to prevent io() from misuse Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e6e4413e Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e6e4413e Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e6e4413e Branch: refs/heads/TINKERPOP-1774 Commit: e6e4413e46594ae8f6d408de4e3d3bd85c228f53 Parents: ded7c18 Author: Stephen Mallette Authored: Fri Jul 20 11:47:24 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 11:47:24 2018 -0400 -- .../strategy/verification/StandardVerificationStrategy.java | 7 +++ .../verification/StandardVerificationStrategyTest.java| 5 + 2 files changed, 12 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e6e4413e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java index 50faa25..258d345 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java @@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.finaliza import org.apache.tinkerpop.gremlin.process.traversal.Step; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.step.ReadWriting; import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep; import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NoneStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep; @@ -39,6 +40,7 @@ import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) + * @author Stephen Mallette (http://stephen.genoprime.com) */ public final class StandardVerificationStrategy extends AbstractTraversalStrategy implements TraversalStrategy.VerificationStrategy { @@ -81,6 +83,11 @@ public final class StandardVerificationStrategy extends AbstractTraversalStrateg if (TraversalHelper.getStepsOfClass(ProfileSideEffectStep.class, traversal).size() > 1) { throw new VerificationException("The profile()-Step cannot be specified multiple times.", traversal); } + +if (traversal.getStartStep() instanceof ReadWriting && traversal.getSteps().size() != 1) { +if (TraversalHelper.getStepsOfClass(NoneStep.class, traversal).size() != traversal.getSteps().size() - 1) +throw new VerificationException("The io() step must be the first and only step in the traversal - it cannot be used with other steps", traversal); +} } public static StandardVerificationStrategy instance() { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e6e4413e/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java -- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java index ee96266..deec002 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java @@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.RequirementsStrategy; import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies; +import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -50,7 +51,11 @@ public class StandardVerificationStrategyTest {
[18/45] tinkerpop git commit: TINKERPOP-1996 Added support/testing for io() in GLVs
TINKERPOP-1996 Added support/testing for io() in GLVs Had to revert to using iterate() and stop read/write() from terminating the traversal. Kinda stinks, but we rely on iterate() quite heavily and for remoting allowing read()/write() to terminate means that the traversal will execute during traversal construction in the translator (which is early and potentially bad). Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/048ea21c Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/048ea21c Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/048ea21c Branch: refs/heads/TINKERPOP-1774 Commit: 048ea21c0adf9297233d06222e75c64dbe1fa1ca Parents: f8e3b8a Author: Stephen Mallette Authored: Thu Jul 19 13:30:02 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:41:01 2018 -0400 -- .../traversal/dsl/graph/GraphTraversal.java | 11 +-- gremlin-dotnet/glv/IO.template | 46 +++ gremlin-dotnet/glv/generate.groovy | 8 ++ .../src/Gremlin.Net/Process/Traversal/IO.cs | 54 + .../Gherkin/TraversalEvaluation/IOParameter.cs | 82 +++ .../TraversalEvaluation/TraversalParser.cs | 7 ++ gremlin-javascript/glv/TraversalSource.template | 9 +++ gremlin-javascript/glv/generate.groovy | 4 + .../gremlin-javascript/lib/process/traversal.js | 25 ++ .../test/cucumber/feature-steps.js | 2 + gremlin-python/glv/TraversalSource.template | 11 +++ gremlin-python/glv/generate.groovy | 4 + .../jython/gremlin_python/process/traversal.py | 19 + .../src/main/jython/radish/feature_steps.py | 5 +- gremlin-test/features/sideEffect/Read.feature | 84 gremlin-test/features/sideEffect/Write.feature | 60 ++ .../gremlin/AbstractGraphProvider.java | 2 +- .../process/traversal/step/map/ReadTest.java| 57 ++--- 18 files changed, 471 insertions(+), 19 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/048ea21c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java index 20f8996..a675ad1 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java @@ -124,6 +124,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCount import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupSideEffectStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep; +import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.LambdaSideEffectStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackValueStep; @@ -2734,13 +2735,13 @@ public interface GraphTraversal extends Traversal { -/ IO TERMINATOR STEPS / +/ IO STEPS / /** * This step is technically a step modulator for the the {@link GraphTraversalSource#io(String)} step which * instructs the step to perform a read with its given configuration. * - * @return the traversal that has been iterated with the read IO action executed + * @return the traversal with the {@link IoStep} modulated to read * @see http://tinkerpop.apache.org/docs/${project.version}/reference/#io-step; target="_blank">Reference Documentation - IO Step * @see http://tinkerpop.apache.org/docs/${project.version}/reference/#read-step; target="_blank">Reference Documentation - Read Step * @since 3.4.0 @@ -2748,14 +2749,14 @@ public interface GraphTraversal extends Traversal { public default GraphTraversal read() { this.asAdmin().getBytecode().addStep(Symbols.read); ((ReadWriting) this.asAdmin().getEndStep()).setMode(ReadWriting.Mode.READING); -return this.iterate(); +return this; } /** * This step is technically a step modulator for the the {@link GraphTraversalSource#io(String)} step which * instructs the
[14/45] tinkerpop git commit: TINKERPOP-1996 Added docs for io()
TINKERPOP-1996 Added docs for io() Killed all the old IO documentation that utilized the GraphReader/Writer classes directly as well as the Graph.io() method that is now deprecated. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/62175c22 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/62175c22 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/62175c22 Branch: refs/heads/TINKERPOP-1774 Commit: 62175c228b77bdbda96c11015f2974828df8f3aa Parents: 576649f Author: Stephen Mallette Authored: Fri Jul 13 17:31:46 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:10 2018 -0400 -- docs/src/reference/the-graph.asciidoc | 370 - docs/src/reference/the-traversal.asciidoc | 140 ++ 2 files changed, 140 insertions(+), 370 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/62175c22/docs/src/reference/the-graph.asciidoc -- diff --git a/docs/src/reference/the-graph.asciidoc b/docs/src/reference/the-graph.asciidoc index 1bcc96f..e9305b2 100644 --- a/docs/src/reference/the-graph.asciidoc +++ b/docs/src/reference/the-graph.asciidoc @@ -345,376 +345,6 @@ In the above case, the call to `graph.tx().createThreadedTx()` creates a new `Gr `ThreadLocal` transaction, thus allowing each thread to operate on it in the same context. In this case, there would be three separate vertices persisted to the `Graph`. -== Gremlin I/O - -image:gremlin-io.png[width=250,float=right] The task of getting data in and out of `Graph` instances is the job of -the Gremlin I/O packages. Gremlin I/O provides two interfaces for reading and writing `Graph` instances: `GraphReader` -and `GraphWriter`. These interfaces expose methods that support: - -* Reading and writing an entire `Graph` -* Reading and writing a `Traversal` as adjacency list format -* Reading and writing a single `Vertex` (with and without associated `Edge` objects) -* Reading and writing a single `Edge` -* Reading and writing a single `VertexProperty` -* Reading and writing a single `Property` -* Reading and writing an arbitrary `Object` - -In all cases, these methods operate in the currency of `InputStream` and `OutputStream` objects, allowing graphs and -their related elements to be written to and read from files, byte arrays, etc. The `Graph` interface offers the `io` -method, which provides access to "reader/writer builder" objects that are pre-configured with serializers provided by -the `Graph`, as well as helper methods for the various I/O capabilities. Unless there are very advanced requirements -for the serialization process, it is always best to utilize the methods on the `Io` interface to construct -`GraphReader` and `GraphWriter` instances, as the implementation may provide some custom settings that would otherwise -have to be configured manually by the user to do the serialization. - -It is up to the implementations of the `GraphReader` and `GraphWriter` interfaces to choose the methods they -implement and the manner in which they work together. The only characteristic enforced and expected is that the write -methods should produce output that is compatible with the corresponding read method. For example, the output of -`writeVertices` should be readable as input to `readVertices` and the output of `writeProperty` should be readable as -input to `readProperty`. - -NOTE: Additional documentation for TinkerPop IO formats can be found in the link:http://tinkerpop.apache.org/docs/x.y.z/dev/io/[IO Reference]. - -=== GraphML Reader/Writer - -image:gremlin-graphml.png[width=350,float=left] The link:http://graphml.graphdrawing.org/[GraphML] file format is a -common XML-based representation of a graph. It is widely supported by graph-related tools and libraries making it a -solid interchange format for TinkerPop. In other words, if the intent is to work with graph data in conjunction with -applications outside of TinkerPop, GraphML may be the best choice to do that. Common use cases might be: - -* Generate a graph using link:https://networkx.github.io/[NetworkX], export it with GraphML and import it to TinkerPop. -* Produce a subgraph and export it to GraphML to be consumed by and visualized in link:https://gephi.org/[Gephi]. -* Migrate the data of an entire graph to a different graph database not supported by TinkerPop. - -As GraphML is a specification for the serialization of an entire graph and not the individual elements of a graph, -methods that support input and output of single vertices, edges, etc. are not supported. - -WARNING: GraphML is a "lossy" format in that it only supports primitive values for properties and does not have -support for `Graph` variables.
[19/45] tinkerpop git commit: TINKERPOP-1996 Removed unecessary enum
TINKERPOP-1996 Removed unecessary enum Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f8e3b8a1 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f8e3b8a1 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f8e3b8a1 Branch: refs/heads/TINKERPOP-1774 Commit: f8e3b8a1df1639405a29f261a9d7da147e88b356 Parents: 8187016 Author: Stephen Mallette Authored: Mon Jul 16 14:47:47 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:41:01 2018 -0400 -- .../process/traversal/step/sideEffect/IoStep.java | 14 -- 1 file changed, 8 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f8e3b8a1/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java index 74b295b..9804333 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java @@ -18,6 +18,8 @@ */ package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect; +import org.apache.commons.configuration.BaseConfiguration; +import org.apache.commons.configuration.Configuration; import org.apache.tinkerpop.gremlin.process.traversal.IO; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; @@ -52,12 +54,6 @@ import java.lang.reflect.Method; */ public class IoStep extends AbstractStep implements ReadWriting { -private enum Format { -GRYO, -GRAPHSON, -GRAPHML -} - private Parameters parameters = new Parameters(); private boolean first = true; private String file; @@ -219,6 +215,12 @@ public class IoStep extends AbstractStep implements ReadWriting { throw new IllegalStateException("Could not detect the file format - specify the writer explicitly or rename file with a standard extension"); } +private Configuration getConfFromParameters() { +final Configuration conf = new BaseConfiguration(); +parameters.getRaw().forEach((key, value) -> conf.setProperty(key.toString(), value.get(0))); +return conf; +} + @Override public int hashCode() { final int hash = super.hashCode() ^ this.parameters.hashCode();
[35/45] tinkerpop git commit: TINKERPOP-1996 Prevent OLTP style execution in Hadoop of io()
TINKERPOP-1996 Prevent OLTP style execution in Hadoop of io() Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/fdb35c69 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/fdb35c69 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/fdb35c69 Branch: refs/heads/TINKERPOP-1774 Commit: fdb35c69422f95199563e938ec30a2408d419a58 Parents: e9ebacf Author: Stephen Mallette Authored: Fri Jul 20 16:13:47 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 16:13:47 2018 -0400 -- .../process/computer/traversal/strategy/HadoopIoStrategy.java | 6 ++ 1 file changed, 6 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fdb35c69/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java -- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java index af3db6e..3614745 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java @@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.step.ReadWriting; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep; import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException; import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper; import java.util.Arrays; @@ -54,6 +55,11 @@ public final class HadoopIoStrategy extends AbstractTraversalStrategy traversal) { +// since hadoopgraph can't be modified we can't try to use the existing IoStep for standard processing +// without graphcomputer +if (traversal.getStartStep() instanceof IoStep) +throw new VerificationException("HadoopGraph requires a GraphComputer for io() step", traversal); + // VertexProgramStrategy should wrap up the IoStep in a TraversalVertexProgramStep. use that to grab the // GraphComputer that was injected in there and push that in to the HadoopIoStep. this step pattern match // is fairly specific and since you really can't chain together steps after io() this approach should work
[43/45] tinkerpop git commit: Merge branch 'tp33'
Merge branch 'tp33' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f50aeb6d Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f50aeb6d Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f50aeb6d Branch: refs/heads/TINKERPOP-1774 Commit: f50aeb6d62009845f42d9558b7cc8e576c91cf4e Parents: a2db39c dfe79c2 Author: Robert Dale Authored: Tue Jul 31 13:12:40 2018 -0400 Committer: Robert Dale Committed: Tue Jul 31 13:12:40 2018 -0400 -- pom.xml | 16 +--- 1 file changed, 1 insertion(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f50aeb6d/pom.xml --
[25/45] tinkerpop git commit: TINKERPOP-1996 Added some docs around IO.registry
TINKERPOP-1996 Added some docs around IO.registry Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/51dc8212 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/51dc8212 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/51dc8212 Branch: refs/heads/TINKERPOP-1774 Commit: 51dc82122af6b8d8c783de58a0451b8b2071c051 Parents: 9423397 Author: Stephen Mallette Authored: Fri Jul 20 07:15:07 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 07:15:07 2018 -0400 -- docs/src/reference/the-traversal.asciidoc | 30 ++ 1 file changed, 30 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/51dc8212/docs/src/reference/the-traversal.asciidoc -- diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc index cd2f5f2..c3b9300 100644 --- a/docs/src/reference/the-traversal.asciidoc +++ b/docs/src/reference/the-traversal.asciidoc @@ -1114,6 +1114,36 @@ IMPORTANT: Remote Gremlin Console users or Gremlin Language Variant (GLV) users the `io()` step should recall that their `read()` or `write()` operation will occur on the server and not locally and therefore the file specified for import/export must be something accessible by the server. +GraphSON and Gryo formats are extensible allowing users and graph providers to extend supported serialization options. +These extensions are exposed through `IoRegistry` implementations. To apply an `IoRegistry` use the `with()` option +and the `IO.registry` key, where the value is either an actual `IoRegistry` instance or the fully qualified class +name of one. + +[source,java] + +g.io(someInputFile). +with(IO.reader, IO.gryo). +with(IO.registry, TinkerIoRegistryV3d0.instance()) + read().iterate() +g.io(someOutputFile). +with(IO.writer,IO.graphson). +with(IO.registry, "org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0") + write().iterate() + + +GLVs will obviously always be forced to use the latter form as they can't explicitly create an instance of an +`IoRegistry` to pass to the server (nor are `IoRegistry` instances necessarily serializable). + +The version of the formats (e.g. GraphSON 2.0 or 3.0) utilized by `io()` is determined entirely by the `IO.reader` and +`IO.writer` configurations or their defaults. The defaults will always be the latest version for the current release +of TinkerPop. It is also possible for graph providers to override these defaults, so consult the documentation of the +underlying graph database in use for any details on that. + +For more advanced configuration of `GraphReader` and `GraphWriter` operations (e.g. normalized output for GraphSON, +disabling class registrations for Gryo, etc.) then construct the appropriate `GraphReader` and `GraphWriter` using +the `build()` method on their implementations and use it directly. It can be passed directly to the `IO.reader` or +`IO.writer` options. Obviously, these are JVM based operations and thus not available to GLVs as portable features. + [[_graphml_reader_writer]] [[graphml]] GraphML
[36/45] tinkerpop git commit: TINKERPOP-1996 Fixed up typos in docs
TINKERPOP-1996 Fixed up typos in docs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/38dc70df Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/38dc70df Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/38dc70df Branch: refs/heads/TINKERPOP-1774 Commit: 38dc70df6db105595784a93ecf5f5726201a962d Parents: fdb35c6 Author: Stephen Mallette Authored: Fri Jul 27 07:07:17 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 27 07:07:17 2018 -0400 -- docs/src/reference/the-traversal.asciidoc | 8 1 file changed, 4 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38dc70df/docs/src/reference/the-traversal.asciidoc -- diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc index c3b9300..c861d87 100644 --- a/docs/src/reference/the-traversal.asciidoc +++ b/docs/src/reference/the-traversal.asciidoc @@ -1086,9 +1086,9 @@ g.io(someOutputFile). write().iterate() -The `IO` class is a helper for the `io()` step that provides expressions that can be used to help configure it +The `IO` class is a helper for the `io()`-step that provides expressions that can be used to help configure it and in this case it allows direct specification of the "reader" or "writer" to use. The "reader" actually refers to -a `GraphReader` implementation and the `writer" refers to a `GraphWriter` implementation. The implementations of +a `GraphReader` implementation and the "writer" refers to a `GraphWriter` implementation. The implementations of those interfaces provided by default are the standard TinkerPop implementations. That default is an important point to consider for users. The default TinkerPop implementations are not designed with @@ -1100,7 +1100,7 @@ writing perspective is not that different in there are no parallel operations in to disk requires a single pass of the data without high memory requirements for larger datasets. In general, TinkerPop recommends that users examine the native bulk import/export tools of the graph implementation -that they choose. Those tools will often outperform the `io()` step and perhaps be easier to use with a greater +that they choose. Those tools will often outperform the `io()`-step and perhaps be easier to use with a greater feature set. That said, graph providers do have the option to optimize `io()` to back it with their own import/export utilities and therefore the default behavior provided by TinkerPop described above might be overridden by the graph. @@ -,7 +,7 @@ functionality internally using <>. With t can be imported/exported assuming that there is a Hadoop `InputFormat` or `OutputFormat` to support it. IMPORTANT: Remote Gremlin Console users or Gremlin Language Variant (GLV) users (e.g. gremlin-python) who utilize -the `io()` step should recall that their `read()` or `write()` operation will occur on the server and not locally +the `io()`-step should recall that their `read()` or `write()` operation will occur on the server and not locally and therefore the file specified for import/export must be something accessible by the server. GraphSON and Gryo formats are extensible allowing users and graph providers to extend supported serialization options.
[16/45] tinkerpop git commit: TINKERPOP-1996 Updated changelog
TINKERPOP-1996 Updated changelog Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/576649fd Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/576649fd Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/576649fd Branch: refs/heads/TINKERPOP-1774 Commit: 576649fd5456f6390bf9481d01438a7e78db083e Parents: f148e93 Author: Stephen Mallette Authored: Fri Jul 13 15:22:43 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:10 2018 -0400 -- CHANGELOG.asciidoc | 1 + 1 file changed, 1 insertion(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/576649fd/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index bc78bbe..1add03c 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -28,6 +28,7 @@ This release also includes changes from <>. * Bumped to Netty 4.1.25. * Bumped to Spark 2.3.1. * Added the `io()` start step and `read()` and `write()` termination steps to the Gremlin language. +* Added `GraphFeatures.supportsIoRead()` and `GraphFeatures.supportsIoWrite()`. * Deprecated `Graph.io()` and related infrastructure. * Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type. * Replaced `Parameterizing.addPropertyMutations()` with `Configuring.configure()`.
[15/45] tinkerpop git commit: TINKERPOP-1996 Removed use of graph.io() in docs
TINKERPOP-1996 Removed use of graph.io() in docs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5bf19e2d Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5bf19e2d Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5bf19e2d Branch: refs/heads/TINKERPOP-1774 Commit: 5bf19e2d35aa2f050ecca0a7b2190553b0422720 Parents: 6d05805 Author: Stephen Mallette Authored: Mon Jul 16 09:29:01 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:10 2018 -0400 -- docs/src/recipes/centrality.asciidoc | 2 +- docs/src/reference/implementations-neo4j.asciidoc | 5 +++-- .../src/reference/implementations-tinkergraph.asciidoc | 8 docs/src/reference/the-traversal.asciidoc | 13 +++-- 4 files changed, 15 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5bf19e2d/docs/src/recipes/centrality.asciidoc -- diff --git a/docs/src/recipes/centrality.asciidoc b/docs/src/recipes/centrality.asciidoc index 8504589..0c1d4bc 100644 --- a/docs/src/recipes/centrality.asciidoc +++ b/docs/src/recipes/centrality.asciidoc @@ -156,7 +156,7 @@ give it the highest rank. Consider the following example using the Grateful Dead [gremlin-groovy] -graph.io(graphml()).readGraph('data/grateful-dead.xml') +g.io('data/grateful-dead.xml').read() g.V().repeat(groupCount('m').by('name').out()).times(5).cap('m'). <1> order(local).by(values, desc).limit(local, 10).next() <2> g.V().repeat(groupCount('m').by('name').out().timeLimit(100)).times(5).cap('m'). <3> http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5bf19e2d/docs/src/reference/implementations-neo4j.asciidoc -- diff --git a/docs/src/reference/implementations-neo4j.asciidoc b/docs/src/reference/implementations-neo4j.asciidoc index 7e05221..1760bd6 100644 --- a/docs/src/reference/implementations-neo4j.asciidoc +++ b/docs/src/reference/implementations-neo4j.asciidoc @@ -93,8 +93,8 @@ labels), a linear scan of the vertex-label partition is still faster than a line [gremlin-groovy] graph = Neo4jGraph.open('/tmp/neo4j') -graph.io(graphml()).readGraph('data/grateful-dead.xml') g = graph.traversal() +g.io('data/grateful-dead.xml').read() g.tx().commit() clock(1000) {g.V().hasLabel('artist').has('name','Garcia').iterate()} <1> graph.cypher("CREATE INDEX ON :artist(name)") <2> @@ -161,7 +161,8 @@ It is possible to leverage Cypher from within Gremlin by using the `Neo4jGraph.c [gremlin-groovy] graph = Neo4jGraph.open('/tmp/neo4j') -graph.io(gryo()).readGraph('data/tinkerpop-modern.kryo') +g = graph.traversal() +g.io('data/tinkerpop-modern.kryo').read() graph.cypher('MATCH (a {name:"marko"}) RETURN a') graph.cypher('MATCH (a {name:"marko"}) RETURN a').select('a').out('knows').values('name') graph.close() http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5bf19e2d/docs/src/reference/implementations-tinkergraph.asciidoc -- diff --git a/docs/src/reference/implementations-tinkergraph.asciidoc b/docs/src/reference/implementations-tinkergraph.asciidoc index 5b04126..acd37dd 100644 --- a/docs/src/reference/implementations-tinkergraph.asciidoc +++ b/docs/src/reference/implementations-tinkergraph.asciidoc @@ -90,12 +90,12 @@ TinkerGraph over the Grateful Dead graph. graph = TinkerGraph.open() g = graph.traversal() -graph.io(graphml()).readGraph('data/grateful-dead.xml') +g.io('data/grateful-dead.xml').read() clock(1000) {g.V().has('name','Garcia').iterate()} <1> graph = TinkerGraph.open() g = graph.traversal() graph.createIndex('name',Vertex.class) -graph.io(graphml()).readGraph('data/grateful-dead.xml') +g.io('data/grateful-dead.xml').read() clock(1000){g.V().has('name','Garcia').iterate()} <2> @@ -158,13 +158,13 @@ cardinality to `list` or else the data will import as `single`. Consider the fo [gremlin-groovy] graph = TinkerGraph.open() -graph.io(gryo()).readGraph("data/tinkerpop-crew.kryo") g = graph.traversal() +g.io("data/tinkerpop-crew.kryo").read() g.V().properties() conf = new BaseConfiguration() conf.setProperty("gremlin.tinkergraph.defaultVertexPropertyCardinality","list") graph = TinkerGraph.open(conf) -graph.io(gryo()).readGraph("data/tinkerpop-crew.kryo") g = graph.traversal() +g.io("data/tinkerpop-crew.kryo").read() g.V().properties() http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5bf19e2d/docs/src/reference/the-traversal.asciidoc -- diff --git
[38/45] tinkerpop git commit: Merge branch 'TINKERPOP-1996'
Merge branch 'TINKERPOP-1996' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/edd82346 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/edd82346 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/edd82346 Branch: refs/heads/TINKERPOP-1774 Commit: edd8234684bedb7c073479724b2ee645a801cbc5 Parents: 7d21ee0 10478be Author: Stephen Mallette Authored: Tue Jul 31 07:35:52 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 07:35:52 2018 -0400 -- CHANGELOG.asciidoc | 4 + docs/src/recipes/centrality.asciidoc| 2 +- .../reference/implementations-neo4j.asciidoc| 5 +- .../implementations-tinkergraph.asciidoc| 8 +- docs/src/reference/the-graph.asciidoc | 370 --- docs/src/reference/the-traversal.asciidoc | 186 +- docs/src/upgrade/release-3.4.x.asciidoc | 49 ++- .../tinkerpop/gremlin/jsr223/CoreImports.java | 2 + .../step/map/TraversalVertexProgramStep.java| 4 - .../decoration/VertexProgramStrategy.java | 11 +- .../tinkerpop/gremlin/process/traversal/IO.java | 83 + .../traversal/dsl/graph/GraphTraversal.java | 37 ++ .../dsl/graph/GraphTraversalSource.java | 22 ++ .../process/traversal/step/ReadWriting.java | 48 +++ .../traversal/step/sideEffect/IoStep.java | 254 + .../process/traversal/step/util/Parameters.java | 4 +- .../ComputerVerificationStrategy.java | 3 +- .../StandardVerificationStrategy.java | 9 + .../tinkerpop/gremlin/structure/Graph.java | 30 ++ .../tinkerpop/gremlin/structure/io/IoCore.java | 3 + .../traversal/dsl/graph/GraphTraversalTest.java | 5 +- .../decoration/VertexProgramStrategyTest.java | 2 +- .../StandardVerificationStrategyTest.java | 13 +- .../glv/GraphTraversalSource.template | 4 +- gremlin-dotnet/glv/IO.template | 46 +++ gremlin-dotnet/glv/generate.groovy | 13 +- .../Process/Traversal/GraphTraversal.cs | 15 +- .../Process/Traversal/GraphTraversalSource.cs | 11 + .../src/Gremlin.Net/Process/Traversal/IO.cs | 56 +++ .../Gherkin/TraversalEvaluation/IOParameter.cs | 82 .../TraversalEvaluation/TraversalParser.cs | 7 + .../groovy/jsr223/GroovyTranslatorProvider.java | 6 + gremlin-javascript/glv/TraversalSource.template | 9 + gremlin-javascript/glv/generate.groovy | 4 + .../lib/process/graph-traversal.js | 30 ++ .../gremlin-javascript/lib/process/traversal.js | 29 ++ .../test/cucumber/feature-steps.js | 2 + gremlin-python/glv/TraversalSource.template | 11 + gremlin-python/glv/generate.groovy | 4 + .../gremlin_python/process/graph_traversal.py | 13 + .../jython/gremlin_python/process/traversal.py | 21 ++ .../src/main/jython/radish/feature_steps.py | 5 +- gremlin-test/features/sideEffect/Read.feature | 84 + gremlin-test/features/sideEffect/Write.feature | 60 +++ .../gremlin/AbstractGraphProvider.java | 22 +- .../apache/tinkerpop/gremlin/TestHelper.java| 24 +- .../gremlin/process/ProcessComputerSuite.java | 4 + .../gremlin/process/ProcessStandardSuite.java | 4 + .../process/traversal/step/map/ReadTest.java| 188 ++ .../process/traversal/step/map/WriteTest.java | 183 + .../ElementIdStrategyProcessTest.java | 1 - .../gremlin/structure/io/util/CustomId.java | 39 ++ .../gremlin/process/FeatureCoverageTest.java| 6 +- .../traversal/step/sideEffect/HadoopIoStep.java | 188 ++ .../traversal/strategy/HadoopIoStrategy.java| 83 + .../gremlin/hadoop/structure/HadoopGraph.java | 24 ++ .../step/sideEffect/TinkerGraphIoStepTest.java | 98 + .../structure/TinkerGraphPlayTest.java | 6 +- ...ctTinkerGraphGraphSONTranslatorProvider.java | 5 + .../gryo/TinkerGraphGryoTranslatorProvider.java | 7 +- 60 files changed, 2121 insertions(+), 427 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/edd82346/CHANGELOG.asciidoc -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/edd82346/docs/src/reference/the-traversal.asciidoc -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/edd82346/docs/src/upgrade/release-3.4.x.asciidoc -- diff --cc docs/src/upgrade/release-3.4.x.asciidoc index 2d699dc,8d87397..9951024 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@@ -31,12 -31,12 +31,12
[21/45] tinkerpop git commit: TINKERPOP-1996 Enabled feature coverage checks for GLV tests on read()/write()
TINKERPOP-1996 Enabled feature coverage checks for GLV tests on read()/write() Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a580b6fd Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a580b6fd Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a580b6fd Branch: refs/heads/TINKERPOP-1774 Commit: a580b6fda232ce6dd035e4c261a53d0f0dc69f83 Parents: 048ea21 Author: Stephen Mallette Authored: Thu Jul 19 14:08:25 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 14:08:25 2018 -0400 -- .../apache/tinkerpop/gremlin/process/FeatureCoverageTest.java | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a580b6fd/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java -- diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java index 503df77..5739629 100644 --- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java +++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java @@ -56,11 +56,13 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProjectTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesTest; +import org.apache.tinkerpop.gremlin.process.traversal.step.map.ReadTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.UnfoldTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.ValueMapTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexTest; +import org.apache.tinkerpop.gremlin.process.traversal.step.map.WriteTest; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateTest; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCountTest; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest; @@ -158,10 +160,12 @@ public class FeatureCoverageTest { GroupCountTest.class, GroupTest.class, InjectTest.class, +ReadTest.class, SackTest.class, SideEffectCapTest.class, //SideEffectTest.class, -StoreTest.class); +StoreTest.class, +WriteTest.class); // SubgraphTest.class, // TreeTest.class);
[45/45] tinkerpop git commit: Add ConnectionPool min and max sizes TINKERPOP-1774
Add ConnectionPool min and max sizes TINKERPOP-1774 The Gremlin.Net ConnectionPool now has min and max sizes. The pool will be initialized with the configured minimum number of connections on creation. It will also no longer create an unlimited number of connections. Instead, a TimeoutException will be thrown when the max limit is reached and no connection became available within a configurable time. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e35ef0af Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e35ef0af Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e35ef0af Branch: refs/heads/TINKERPOP-1774 Commit: e35ef0af1a74e093054776a423f825fa11fa8a36 Parents: b183edd Author: Florian Hockmann Authored: Mon Jul 30 21:45:26 2018 +0200 Committer: Florian Hockmann Committed: Tue Jul 31 22:07:05 2018 +0200 -- CHANGELOG.asciidoc | 1 + docs/src/upgrade/release-3.4.x.asciidoc | 11 ++ .../src/Gremlin.Net/Driver/Connection.cs| 16 +-- .../src/Gremlin.Net/Driver/ConnectionPool.cs| 129 +-- .../Driver/ConnectionPoolSettings.cs| 55 .../src/Gremlin.Net/Driver/GremlinClient.cs | 7 +- .../Driver/GremlinClientExtensions.cs | 12 +- .../Driver/Remote/DriverRemoteConnection.cs | 4 +- .../Gremlin.Net/Driver/WebSocketConnection.cs | 16 +-- .../Driver/ConnectionPoolTests.cs | 68 -- .../RemoteConnectionFactory.cs | 4 +- 11 files changed, 239 insertions(+), 84 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e35ef0af/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 430f52d..ed1ea6b 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -25,6 +25,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima This release also includes changes from <>. +* Added min and max connection pool sizes for Gremlin.Net which are configurable through optional ConnectionPoolSettings. * `AbstractGraphProvider` uses `g.io()` for loading test data. * Added the `io()` start step and `read()` and `write()` termination steps to the Gremlin language. * Added `GraphFeatures.supportsIoRead()` and `GraphFeatures.supportsIoWrite()`. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e35ef0af/docs/src/upgrade/release-3.4.x.asciidoc -- diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc index 9951024..73cbd08 100644 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@ -177,6 +177,17 @@ when dealing with that event. To make this easier, the event now raises with a ` link:https://issues.apache.org/jira/browse/TINKERPOP-1831[TINKERPOP-1831] + Gremlin.Net: Configurable Max and Min ConnectionPool Sizes + +Gremlin.Net's `ConnectionPool` now has a minimum and a maximum size. These sizes are configurable through added +`ConnectionPoolSettings`. The minimum size determines how many connections are initially created. The maximum size +is an upper limit of connections that can be created. When this limit is reached and another connection is needed, +then the connection pool waits for a connection to become available again. The time to be waited is limited by the +newly introduced option `ConnectionPoolSettings.WaitForConnectionTimeout`. A `TimeoutException` is thrown when +no connection becomes available until this timeout is reached. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1774[TINKERPOP-1774] + Deprecation Removal The following deprecated classes, methods or fields have been removed in this version: http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e35ef0af/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs -- diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs index 279c708..2452e3e 100644 --- a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs @@ -59,23 +59,23 @@ namespace Gremlin.Net.Driver return await ReceiveAsync().ConfigureAwait(false); } -public async Task ConnectAsync() +public Task ConnectAsync() { -await _webSocketConnection.ConnectAsync(_uri).ConfigureAwait(false); +return _webSocketConnection.ConnectAsync(_uri); } -public async Task CloseAsync() +public Task CloseAsync() { -
[34/45] tinkerpop git commit: TINKERPOP-1996 Added IoStep to list of unsupported steps
TINKERPOP-1996 Added IoStep to list of unsupported steps If this isn't there then GraphReader/Writer will blow up as it tries to mutate the graph. IoStep is an OLTP only step. For OLAP each graph implementation will need to add its own GraphComputer-ready step. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e9ebacfc Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e9ebacfc Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e9ebacfc Branch: refs/heads/TINKERPOP-1774 Commit: e9ebacfc84aca0e0ac30720bba68939f77c4c5d0 Parents: 23c71b6 Author: Stephen Mallette Authored: Fri Jul 20 15:08:45 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 15:08:45 2018 -0400 -- .../strategy/verification/ComputerVerificationStrategy.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e9ebacfc/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java index 2d076b6..5c2d299 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java @@ -28,6 +28,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating; import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor; import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep; +import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep; @@ -46,7 +47,7 @@ public final class ComputerVerificationStrategy extends AbstractTraversalStrateg private static final ComputerVerificationStrategy INSTANCE = new ComputerVerificationStrategy(); private static final Set> UNSUPPORTED_STEPS = new HashSet<>(Arrays.asList( -InjectStep.class, Mutating.class, SubgraphStep.class, ComputerResultStep.class +InjectStep.class, Mutating.class, SubgraphStep.class, ComputerResultStep.class, IoStep.class )); private ComputerVerificationStrategy() {
[13/45] tinkerpop git commit: TINKERPOP-1996 Moved IoStep implementations to sideEffect package
TINKERPOP-1996 Moved IoStep implementations to sideEffect package These steps really aren't quite sideEffects and not quite map steps either but they seem to fit better as sideEffect. meh Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/6d05805a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/6d05805a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/6d05805a Branch: refs/heads/TINKERPOP-1774 Commit: 6d05805ada657bcb3f50a60aa0c313c29d4611bb Parents: 62175c2 Author: Stephen Mallette Authored: Sat Jul 14 06:23:54 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:10 2018 -0400 -- .../dsl/graph/GraphTraversalSource.java | 2 +- .../process/traversal/step/map/IoStep.java | 241 --- .../traversal/step/sideEffect/IoStep.java | 241 +++ .../traversal/step/map/HadoopIoStep.java| 170 - .../traversal/step/sideEffect/HadoopIoStep.java | 163 + .../traversal/strategy/HadoopIoStrategy.java| 5 +- 6 files changed, 407 insertions(+), 415 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6d05805a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java index 7357418..df1b108 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java @@ -31,7 +31,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStartStep; import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep; import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep; -import org.apache.tinkerpop.gremlin.process.traversal.step.map.IoStep; +import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.RequirementsStrategy; import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6d05805a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/IoStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/IoStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/IoStep.java deleted file mode 100644 index 668b3dc..000 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/IoStep.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tinkerpop.gremlin.process.traversal.step.map; - -import org.apache.tinkerpop.gremlin.process.traversal.IO; -import org.apache.tinkerpop.gremlin.process.traversal.Traversal; -import org.apache.tinkerpop.gremlin.process.traversal.Traverser; -import org.apache.tinkerpop.gremlin.process.traversal.step.ReadWriting; -import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep; -import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters; -import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.EmptyTraverser; -import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException; -import org.apache.tinkerpop.gremlin.structure.Graph; -import
[27/45] tinkerpop git commit: TINKERPOP-1996 Fixed up general strategy application around io()
TINKERPOP-1996 Fixed up general strategy application around io() The GraphComputer was not being set properly in the HadoopIoStep and therefore executions of OLAP runs would not work even if withComputer(SparkGraphComputer) was set. It only worked if the gremlin.hadoop.defaultGraphComputer property was set which was weird. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c97d747f Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c97d747f Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c97d747f Branch: refs/heads/TINKERPOP-1774 Commit: c97d747f4b05cef42eb0e53adae50fcdee083a2e Parents: 4d979cf Author: Stephen Mallette Authored: Fri Jul 20 10:30:00 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 10:30:00 2018 -0400 -- .../step/map/TraversalVertexProgramStep.java| 4 --- .../decoration/VertexProgramStrategy.java | 30 +--- .../traversal/step/sideEffect/IoStep.java | 2 -- .../traversal/strategy/HadoopIoStrategy.java| 28 -- 4 files changed, 33 insertions(+), 31 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c97d747f/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 4eb950f..30cfee5 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 @@ -19,19 +19,15 @@ package org.apache.tinkerpop.gremlin.process.computer.traversal.step.map; -import org.apache.tinkerpop.gremlin.process.computer.GraphComputer; import org.apache.tinkerpop.gremlin.process.computer.GraphFilter; import org.apache.tinkerpop.gremlin.process.computer.Memory; import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects; import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram; -import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy; -import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.finalization.ComputerFinalizationStrategy; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent; import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; -import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies; import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c97d747f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java index cb99652..fa6e23f 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java @@ -101,23 +101,21 @@ public final class VertexProgramStrategy extends AbstractTraversalStrategy computerTraversal = new DefaultTraversal<>(); +final Step firstLegalOLAPStep = getFirstLegalOLAPStep(currentStep); +final Step lastLegalOLAPStep = getLastLegalOLAPStep(currentStep); +if (!(firstLegalOLAPStep instanceof EmptyStep)) { +final int index = TraversalHelper.stepIndex(firstLegalOLAPStep, traversal); +TraversalHelper.removeToTraversal(firstLegalOLAPStep, lastLegalOLAPStep.getNextStep(), (Traversal.Admin) computerTraversal); +final TraversalVertexProgramStep
[41/45] tinkerpop git commit: Merge branch 'tp33'
Merge branch 'tp33' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a2db39cc Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a2db39cc Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a2db39cc Branch: refs/heads/TINKERPOP-1774 Commit: a2db39cc710dd2809bab3fb6b2db44257458dcc8 Parents: edd8234 c49c0cc Author: Stephen Mallette Authored: Tue Jul 31 08:35:34 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 08:35:34 2018 -0400 -- docs/src/dev/developer/development-environment.asciidoc | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) --
[07/45] tinkerpop git commit: TINKERPOP-1996 Minor refactoring of Reading/Writing and javadoc
TINKERPOP-1996 Minor refactoring of Reading/Writing and javadoc Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ff2773a5 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ff2773a5 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ff2773a5 Branch: refs/heads/TINKERPOP-1774 Commit: ff2773a5ef1eff379cb5f3b809d4677ff64a076d Parents: 0785090 Author: Stephen Mallette Authored: Tue Jul 10 12:55:06 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:39:29 2018 -0400 -- .../gremlin/process/traversal/step/Reading.java | 7 - .../gremlin/process/traversal/step/Writing.java | 8 +- .../process/traversal/step/map/ReadStep.java| 27 ++-- .../process/traversal/step/map/WriteStep.java | 25 +- .../traversal/step/map/HadoopReadStep.java | 2 +- .../traversal/step/map/HadoopWriteStep.java | 2 +- .../traversal/strategy/HadoopIoStrategy.java| 4 +-- 7 files changed, 42 insertions(+), 33 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff2773a5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Reading.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Reading.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Reading.java index b79378b..3f7c714 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Reading.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Reading.java @@ -19,9 +19,14 @@ package org.apache.tinkerpop.gremlin.process.traversal.step; /** + * An interface for describing steps that will read a graph from some specified location. + * * @author Stephen Mallette (http://stephen.genoprime.com) */ public interface Reading extends Configuring { -public String getLocalFile(); +/** + * Get the file location to read from. + */ +public String getFile(); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff2773a5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Writing.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Writing.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Writing.java index 7b455f2..fe56363 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Writing.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Writing.java @@ -19,8 +19,14 @@ package org.apache.tinkerpop.gremlin.process.traversal.step; /** + * An interface for describing steps that will write a graph to some specified location. + * * @author Stephen Mallette (http://stephen.genoprime.com) */ public interface Writing extends Configuring { -public String getLocalFile(); + +/** + * Get the file location to write to. + */ +public String getFile(); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff2773a5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ReadStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ReadStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ReadStep.java index 2612d18..7c71ab5 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ReadStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ReadStep.java @@ -21,7 +21,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator; -import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring; import org.apache.tinkerpop.gremlin.process.traversal.step.Reading; import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters; @@ -48,20 +47,20 @@ public class ReadStep extends AbstractStep, Map, Map, Maphttp://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff2773a5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteStep.java -- diff --git
[11/45] tinkerpop git commit: TINKERPOP-1996 Fixed a bad method call for Configuring steps
TINKERPOP-1996 Fixed a bad method call for Configuring steps Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9e4da014 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9e4da014 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9e4da014 Branch: refs/heads/TINKERPOP-1774 Commit: 9e4da0149247a50277e2a468b0becf892426ce2e Parents: ae79637 Author: Stephen Mallette Authored: Fri Jul 13 11:37:02 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:09 2018 -0400 -- .../process/computer/traversal/strategy/HadoopIoStrategy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9e4da014/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java -- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java index 89ee04b..6d3899e 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java @@ -55,7 +55,7 @@ public final class HadoopIoStrategy extends AbstractTraversalStrategy -hadoopIoStep.configure(null, kv.getKey(), kv.getValue()) +hadoopIoStep.configure(kv.getKey(), kv.getValue()) ); TraversalHelper.replaceStep((Step) readWriting, hadoopIoStep, traversal);
[20/45] tinkerpop git commit: TINKERPOP-1996 Used g.io() in tests by default
TINKERPOP-1996 Used g.io() in tests by default Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/81870168 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/81870168 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/81870168 Branch: refs/heads/TINKERPOP-1774 Commit: 8187016886b8b699ff107c9b6a7dfe95deb7e4a1 Parents: 5bf19e2 Author: Stephen Mallette Authored: Mon Jul 16 12:10:02 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:41:01 2018 -0400 -- CHANGELOG.asciidoc | 5 ++-- .../gremlin/AbstractGraphProvider.java | 8 +++ .../apache/tinkerpop/gremlin/TestHelper.java| 24 ++-- 3 files changed, 24 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/81870168/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 1add03c..1848421 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -25,11 +25,12 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima This release also includes changes from <>. -* Bumped to Netty 4.1.25. -* Bumped to Spark 2.3.1. +* `AbstractGraphProvider` uses `g.io()` for loading test data. * Added the `io()` start step and `read()` and `write()` termination steps to the Gremlin language. * Added `GraphFeatures.supportsIoRead()` and `GraphFeatures.supportsIoWrite()`. * Deprecated `Graph.io()` and related infrastructure. +* Bumped to Netty 4.1.25. +* Bumped to Spark 2.3.1. * Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type. * Replaced `Parameterizing.addPropertyMutations()` with `Configuring.configure()`. * Changed interface hierarchy for `Parameterizing` and `Mutating` interfaces as they are tightly related. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/81870168/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGraphProvider.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGraphProvider.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGraphProvider.java index 75d033b..b6fc43c 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGraphProvider.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGraphProvider.java @@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo; import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader; import org.apache.commons.configuration.BaseConfiguration; import org.apache.commons.configuration.Configuration; +import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoResourceAccess; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -142,9 +143,8 @@ public abstract class AbstractGraphProvider implements GraphProvider { * @param path the path to the file to load into the graph */ protected void readIntoGraph(final Graph graph, final String path) throws IOException { -final GraphReader reader = GryoReader.build().create(); -try (final InputStream stream = AbstractGremlinTest.class.getResourceAsStream(path)) { -reader.readGraph(stream, graph); -} +final String dataFile = TestHelper.generateTempFileFromResource(graph.getClass(), +GryoResourceAccess.class, path.substring(path.lastIndexOf(File.separator) + 1), "", false).getAbsolutePath(); +graph.traversal().io(dataFile).read(); } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/81870168/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java index 38d9a25..cda32e2 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java @@ -152,17 +152,27 @@ public final class TestHelper { * {@link TestHelper#makeTestDataPath} in a subdirectory called {@code temp/resources}. */ public static File generateTempFileFromResource(final Class graphClass, final Class resourceClass, final String resourceName, final String extension) throws IOException { +return generateTempFileFromResource(graphClass, resourceClass, resourceName, extension, true); +} + +/** + * Copies a file stored as part of a resource to the file system in the
[26/45] tinkerpop git commit: TINKERPOP-1996 Pass configurations from with() through to Hadoop
TINKERPOP-1996 Pass configurations from with() through to Hadoop This will allow users to override or add to the Hadoop/Spark/OLAP configuration as needed Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/4d979cf8 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/4d979cf8 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/4d979cf8 Branch: refs/heads/TINKERPOP-1774 Commit: 4d979cf8dc4482d574191a76a0c60e281f887563 Parents: 51dc821 Author: Stephen Mallette Authored: Fri Jul 20 07:35:48 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 07:35:48 2018 -0400 -- .../traversal/step/sideEffect/HadoopIoStep.java | 29 ++-- 1 file changed, 27 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4d979cf8/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/step/sideEffect/HadoopIoStep.java -- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/step/sideEffect/HadoopIoStep.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/step/sideEffect/HadoopIoStep.java index ca369b6..2e96276 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/step/sideEffect/HadoopIoStep.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/step/sideEffect/HadoopIoStep.java @@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.computer.clone.CloneVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.VertexProgramStep; import org.apache.tinkerpop.gremlin.process.traversal.IO; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.step.ReadWriting; import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters; @@ -37,7 +38,9 @@ import org.apache.tinkerpop.gremlin.structure.util.StringFactory; /** * An OLAP oriented step for doing IO operations with {@link GraphTraversalSource#io(String)} which uses the - * {@link CloneVertexProgram} for its implementation. + * {@link CloneVertexProgram} for its implementation. Standard Hadoop OLAP configurations can be passed using the + * {@link GraphTraversal#with(String, Object)} step modulator as all options aside from those in {@link IO} will be + * transferred. * * @author Stephen Mallette (http://stephen.genoprime.com) */ @@ -69,7 +72,6 @@ public class HadoopIoStep extends VertexProgramStep implements ReadWriting { @Override public void configure(final Object... keyValues) { -// TODO: probably should write to the Configuration selectively - no need for actual Parameters? this.parameters.set(null, keyValues); } @@ -121,6 +123,8 @@ public class HadoopIoStep extends VertexProgramStep implements ReadWriting { graph.configuration().setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, inputFormatClassName); graph.configuration().setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, file); + +addParametersToConfiguration(graph); } private void configureForWrite(final Graph graph) { @@ -137,6 +141,27 @@ public class HadoopIoStep extends VertexProgramStep implements ReadWriting { graph.configuration().setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, outputFormatClassName); graph.configuration().setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, file); + +addParametersToConfiguration(graph); +} + +/** + * Overwrites all configurations from values passed using {@link GraphTraversal#with(String, Object)}. + */ +private void addParametersToConfiguration(final Graph graph) { +parameters.getRaw(IO.writer, IO.writer, IO.registry).entrySet().forEach(kv -> { +if (kv.getValue().size() == 1) +graph.configuration().setProperty(kv.getKey().toString(), kv.getValue().get(0)); +else { +// reset the default configuration with the first option then add to that for List options +for (int ix = 0; ix < kv.getValue().size(); ix++) { +if (ix == 0) + graph.configuration().setProperty(kv.getKey().toString(), kv.getValue().get(ix)); +else + graph.configuration().addProperty(kv.getKey().toString(),
[22/45] tinkerpop git commit: TINKERPOP-1996 Added iterate() to read()/write() steps in docs
TINKERPOP-1996 Added iterate() to read()/write() steps in docs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ae3b1497 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ae3b1497 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ae3b1497 Branch: refs/heads/TINKERPOP-1774 Commit: ae3b149789b8a9779d0549cee8a6ca2e2febbd2b Parents: a580b6f Author: Stephen Mallette Authored: Thu Jul 19 14:24:15 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 14:24:15 2018 -0400 -- docs/src/recipes/centrality.asciidoc| 2 +- .../reference/implementations-neo4j.asciidoc| 4 +-- .../implementations-tinkergraph.asciidoc| 8 ++--- docs/src/reference/the-traversal.asciidoc | 35 +++- 4 files changed, 26 insertions(+), 23 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae3b1497/docs/src/recipes/centrality.asciidoc -- diff --git a/docs/src/recipes/centrality.asciidoc b/docs/src/recipes/centrality.asciidoc index 0c1d4bc..59e6a4d 100644 --- a/docs/src/recipes/centrality.asciidoc +++ b/docs/src/recipes/centrality.asciidoc @@ -156,7 +156,7 @@ give it the highest rank. Consider the following example using the Grateful Dead [gremlin-groovy] -g.io('data/grateful-dead.xml').read() +g.io('data/grateful-dead.xml').read().iterate() g.V().repeat(groupCount('m').by('name').out()).times(5).cap('m'). <1> order(local).by(values, desc).limit(local, 10).next() <2> g.V().repeat(groupCount('m').by('name').out().timeLimit(100)).times(5).cap('m'). <3> http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae3b1497/docs/src/reference/implementations-neo4j.asciidoc -- diff --git a/docs/src/reference/implementations-neo4j.asciidoc b/docs/src/reference/implementations-neo4j.asciidoc index 1760bd6..cfbf612 100644 --- a/docs/src/reference/implementations-neo4j.asciidoc +++ b/docs/src/reference/implementations-neo4j.asciidoc @@ -94,7 +94,7 @@ labels), a linear scan of the vertex-label partition is still faster than a line graph = Neo4jGraph.open('/tmp/neo4j') g = graph.traversal() -g.io('data/grateful-dead.xml').read() +g.io('data/grateful-dead.xml').read().iterate() g.tx().commit() clock(1000) {g.V().hasLabel('artist').has('name','Garcia').iterate()} <1> graph.cypher("CREATE INDEX ON :artist(name)") <2> @@ -162,7 +162,7 @@ It is possible to leverage Cypher from within Gremlin by using the `Neo4jGraph.c graph = Neo4jGraph.open('/tmp/neo4j') g = graph.traversal() -g.io('data/tinkerpop-modern.kryo').read() +g.io('data/tinkerpop-modern.kryo').read().iterate() graph.cypher('MATCH (a {name:"marko"}) RETURN a') graph.cypher('MATCH (a {name:"marko"}) RETURN a').select('a').out('knows').values('name') graph.close() http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae3b1497/docs/src/reference/implementations-tinkergraph.asciidoc -- diff --git a/docs/src/reference/implementations-tinkergraph.asciidoc b/docs/src/reference/implementations-tinkergraph.asciidoc index acd37dd..fe14d0f 100644 --- a/docs/src/reference/implementations-tinkergraph.asciidoc +++ b/docs/src/reference/implementations-tinkergraph.asciidoc @@ -90,12 +90,12 @@ TinkerGraph over the Grateful Dead graph. graph = TinkerGraph.open() g = graph.traversal() -g.io('data/grateful-dead.xml').read() +g.io('data/grateful-dead.xml').read().iterate() clock(1000) {g.V().has('name','Garcia').iterate()} <1> graph = TinkerGraph.open() g = graph.traversal() graph.createIndex('name',Vertex.class) -g.io('data/grateful-dead.xml').read() +g.io('data/grateful-dead.xml').read().iterate() clock(1000){g.V().has('name','Garcia').iterate()} <2> @@ -159,12 +159,12 @@ cardinality to `list` or else the data will import as `single`. Consider the fo graph = TinkerGraph.open() g = graph.traversal() -g.io("data/tinkerpop-crew.kryo").read() +g.io("data/tinkerpop-crew.kryo").read().iterate() g.V().properties() conf = new BaseConfiguration() conf.setProperty("gremlin.tinkergraph.defaultVertexPropertyCardinality","list") graph = TinkerGraph.open(conf) g = graph.traversal() -g.io("data/tinkerpop-crew.kryo").read() +g.io("data/tinkerpop-crew.kryo").read().iterate() g.V().properties() http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae3b1497/docs/src/reference/the-traversal.asciidoc -- diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc index cca71f6..cd2f5f2 100644 ---
[32/45] tinkerpop git commit: TINKERPOP-1996 Testing for GraphSON and IoRegistry configuration
TINKERPOP-1996 Testing for GraphSON and IoRegistry configuration Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ae3f685a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ae3f685a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ae3f685a Branch: refs/heads/TINKERPOP-1774 Commit: ae3f685ad7af326c9f1282da296e9db49f94da03 Parents: 7f1bf17 Author: Stephen Mallette Authored: Fri Jul 20 11:55:09 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 11:55:09 2018 -0400 -- .../step/sideEffect/TinkerGraphIoStepTest.java | 23 1 file changed, 23 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae3f685a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphIoStepTest.java -- diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphIoStepTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphIoStepTest.java index 06c4db8..8bab7da 100644 --- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphIoStepTest.java +++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphIoStepTest.java @@ -72,4 +72,27 @@ public class TinkerGraphIoStepTest { assertEquals(1, emptyG.V().has("custom", new CustomId("a", uuid)).count().next().intValue()); } + +@Test +public void shouldWriteReadWithCustomIoRegistryGraphSON() throws Exception { +final UUID uuid = UUID.randomUUID(); +g.addV("person").property("name","stephen").property("custom", new CustomId("a", uuid)).iterate(); + +final File file = TestHelper.generateTempFile(TinkerGraphIoStepTest.class, "shouldWriteReadWithCustomIoRegistryGraphSON", ".json"); +g.io(file.getAbsolutePath()).with(IO.registry, CustomId.CustomIdIoRegistry.class.getName()).write().iterate(); + +final Graph emptyGraph = TinkerGraph.open(); +final GraphTraversalSource emptyG = emptyGraph.traversal(); + +try { +emptyG.io(file.getAbsolutePath()).read().iterate(); +fail("Can't read without a registry"); +} catch (Exception ignored) { +// do nothing +} + +emptyG.io(file.getAbsolutePath()).with(IO.registry, CustomId.CustomIdIoRegistry.instance()).read().iterate(); + +assertEquals(1, emptyG.V().has("custom", new CustomId("a", uuid)).count().next().intValue()); +} }
[23/45] tinkerpop git commit: TINKERPOP-1996 Added support for setting IoRegistries using with()
TINKERPOP-1996 Added support for setting IoRegistries using with() IORegistry instances are important because they feed serializer information to the Reader/Writer instances. Of all the configuration options that one seemed like the most important to make possible using with(). Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ff71c6ab Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ff71c6ab Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ff71c6ab Branch: refs/heads/TINKERPOP-1774 Commit: ff71c6abee0b39d7ee95128c3d64906daad96a76 Parents: ae3b149 Author: Stephen Mallette Authored: Thu Jul 19 16:13:57 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 16:13:57 2018 -0400 -- .../tinkerpop/gremlin/process/traversal/IO.java | 7 ++ .../traversal/step/sideEffect/IoStep.java | 75 .../process/traversal/step/util/Parameters.java | 4 +- .../Process/Traversal/GraphTraversal.cs | 21 ++ .../src/Gremlin.Net/Process/Traversal/IO.cs | 2 + .../gremlin-javascript/lib/process/traversal.js | 4 ++ .../jython/gremlin_python/process/traversal.py | 2 + .../gremlin/structure/io/util/CustomId.java | 39 ++ .../step/sideEffect/TinkerGraphIoStepTest.java | 75 9 files changed, 181 insertions(+), 48 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff71c6ab/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java index 6668cf1..67b4670 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java @@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.GraphReader; import org.apache.tinkerpop.gremlin.structure.io.GraphWriter; +import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLReader; import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLWriter; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader; @@ -73,4 +74,10 @@ public class IO { * the file extension provided to it. */ public static final String writer = Graph.Hidden.hide("tinkerpop.io.writer"); + +/** + * A key that identifies the fully qualified class names of {@link IoRegistry} instances to use. May be specified + * multiple times (i.e. once for each registry) using the {@link GraphTraversal#with(String, Object)} modulator. + */ +public static final String registry = Graph.Hidden.hide("tinkerpop.io.registry"); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff71c6ab/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java index 9804333..1d4f40b 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java @@ -31,10 +31,13 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementExce import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.GraphReader; import org.apache.tinkerpop.gremlin.structure.io.GraphWriter; +import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLReader; import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLWriter; +import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter; +import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper; import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader; import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; @@ -46,6 +49,9 @@ import java.io.IOException; import
[33/45] tinkerpop git commit: TINKERPOP-1996 Fixed verification on io()
TINKERPOP-1996 Fixed verification on io() Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/23c71b60 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/23c71b60 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/23c71b60 Branch: refs/heads/TINKERPOP-1774 Commit: 23c71b60cc34c14e9defc6a9a7ab6c57c090460b Parents: ae3f685 Author: Stephen Mallette Authored: Fri Jul 20 13:22:47 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 13:22:47 2018 -0400 -- .../verification/StandardVerificationStrategy.java | 6 -- .../StandardVerificationStrategyTest.java | 16 +++- 2 files changed, 15 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/23c71b60/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java index 258d345..7d88ed9 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java @@ -84,8 +84,10 @@ public final class StandardVerificationStrategy extends AbstractTraversalStrateg throw new VerificationException("The profile()-Step cannot be specified multiple times.", traversal); } -if (traversal.getStartStep() instanceof ReadWriting && traversal.getSteps().size() != 1) { -if (TraversalHelper.getStepsOfClass(NoneStep.class, traversal).size() != traversal.getSteps().size() - 1) +if (traversal.getStartStep() instanceof ReadWriting && !endStep.equals(traversal.getStartStep())) { +final int total = TraversalHelper.getStepsOfClass(NoneStep.class, traversal).size() + +TraversalHelper.getStepsOfClass(RequirementsStep.class, traversal).size() + 1; +if (total != traversal.getSteps().size()) throw new VerificationException("The io() step must be the first and only step in the traversal - it cannot be used with other steps", traversal); } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/23c71b60/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java -- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java index deec002..96a68b2 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java @@ -18,6 +18,7 @@ */ package org.apache.tinkerpop.gremlin.process.traversal.strategy.verification; +import org.apache.tinkerpop.gremlin.TestHelper; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; @@ -29,6 +30,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; +import java.io.File; import java.util.Arrays; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out; @@ -44,18 +46,22 @@ import static org.junit.Assert.fail; @RunWith(Parameterized.class) public class StandardVerificationStrategyTest { + @Parameterized.Parameters(name = "{0}") -public static Iterable data() { +public static Iterable data() throws Exception { + +final String file = TestHelper.generateTempFile(StandardVerificationStrategyTest.class, "shouldBeVerified", ".kryo").getAbsolutePath(); + return Arrays.asList(new Object[][]{ // traversals that should fail verification {"__.repeat(out().fold().unfold()).times(2)", repeat(out().fold().unfold()).times(2), false}, {"__.repeat(sum()).times(2)", repeat(sum()).times(2), false}, {"__.repeat(out().count())",
[17/45] tinkerpop git commit: TINKERPOP-1996 Got read/write() tests running for OLAP
TINKERPOP-1996 Got read/write() tests running for OLAP Introduced new Graph.Features to provider better separation between graph mutation features and graph loading features - they are two different things as demonstrated by io(). Fixed HadoopIoStep/Strategy so that they properly handle the different input/output format types expected. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f148e933 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f148e933 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f148e933 Branch: refs/heads/TINKERPOP-1774 Commit: f148e9331a945e0f4f707ea937b610e5902701c7 Parents: bd275a7 Author: Stephen Mallette Authored: Fri Jul 13 15:17:17 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:10 2018 -0400 -- .../tinkerpop/gremlin/structure/Graph.java | 27 + .../gremlin/AbstractGraphProvider.java | 18 -- .../gremlin/process/ProcessComputerSuite.java | 4 ++ .../process/traversal/step/map/ReadTest.java| 21 --- .../process/traversal/step/map/WriteTest.java | 14 - .../traversal/step/map/HadoopIoStep.java| 60 +++- .../traversal/strategy/HadoopIoStrategy.java| 2 +- .../gremlin/hadoop/structure/HadoopGraph.java | 16 ++ 8 files changed, 142 insertions(+), 20 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f148e933/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java index f1fc54a..f62b897 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java @@ -23,6 +23,8 @@ import org.apache.tinkerpop.gremlin.process.computer.GraphComputer; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; +import org.apache.tinkerpop.gremlin.structure.io.GraphReader; +import org.apache.tinkerpop.gremlin.structure.io.GraphWriter; import org.apache.tinkerpop.gremlin.structure.io.Io; import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; import org.apache.tinkerpop.gremlin.structure.util.FeatureDescriptor; @@ -439,6 +441,8 @@ public interface Graph extends AutoCloseable, Host { public static final String FEATURE_PERSISTENCE = "Persistence"; public static final String FEATURE_THREADED_TRANSACTIONS = "ThreadedTransactions"; public static final String FEATURE_CONCURRENT_ACCESS = "ConcurrentAccess"; +public static final String FEATURE_IO_READ = "IoRead"; +public static final String FEATURE_IO_WRITE = "IoWrite"; /** * Determines if the {@code Graph} implementation supports {@link GraphComputer} based processing. @@ -489,6 +493,29 @@ public interface Graph extends AutoCloseable, Host { } /** + * Determines if the {@code Graph} implementations supports read operations as executed with the + * {@link GraphTraversalSource#io(String)} step. Graph implementations will generally support this by + * default as any graph that can support direct mutation through the Structure API will by default + * accept data from the standard TinkerPop {@link GraphReader} implementations. However, some graphs like + * {@code HadoopGraph} don't accept direct mutations but can still do reads from that {@code io()} step. + */ +@FeatureDescriptor(name = FEATURE_IO_READ) +public default boolean supportsIoRead() { +return true; +} + +/** + * Determines if the {@code Graph} implementations supports write operations as executed with the + * {@link GraphTraversalSource#io(String)} step. Graph implementations will generally support this by + * default given the standard TinkerPop {@link GraphWriter} implementations. However, some graphs like + * {@code HadoopGraph} will use a different approach to handle writes. + */ +@FeatureDescriptor(name = FEATURE_IO_WRITE) +public default boolean supportsIoWrite() { +return true; +} + +/** * Gets the features related to "graph sideEffects" operation. */ public default
[03/45] tinkerpop git commit: TINKERPOP-1996 Made read()/write() terminator steps
TINKERPOP-1996 Made read()/write() terminator steps Without this approach the with() operator couldn't be used because the traversal would already be iterated on the call to read() and write(). In this way read() and write() are both terminators and modulators at the same time. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/767d65b9 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/767d65b9 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/767d65b9 Branch: refs/heads/TINKERPOP-1774 Commit: 767d65b9d54f1774b13cc5a61db711268f213ff1 Parents: d99909c Author: Stephen Mallette Authored: Wed Jul 11 10:20:39 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:39:29 2018 -0400 -- .../decoration/VertexProgramStrategy.java | 5 +- .../process/traversal/TraversalStrategies.java | 2 - .../traversal/dsl/graph/GraphTraversal.java | 34 + .../dsl/graph/GraphTraversalSource.java | 19 +-- .../process/traversal/step/ReadWriting.java | 40 ++ .../gremlin/process/traversal/step/Reading.java | 32 - .../gremlin/process/traversal/step/Writing.java | 32 - .../process/traversal/step/map/IoStep.java | 135 +++ .../process/traversal/step/map/ReadStep.java| 113 .../process/traversal/step/map/WriteStep.java | 111 --- .../strategy/verification/IoUsageStrategy.java | 74 -- .../decoration/VertexProgramStrategyTest.java | 4 +- .../verification/IoUsageStrategyTest.java | 93 - .../process/traversal/step/map/ReadTest.java| 8 +- .../traversal/step/map/HadoopIoStep.java| 110 +++ .../traversal/step/map/HadoopReadStep.java | 82 --- .../traversal/step/map/HadoopWriteStep.java | 82 --- .../traversal/strategy/HadoopIoStrategy.java| 30 ++--- .../structure/TinkerGraphPlayTest.java | 2 +- 19 files changed, 343 insertions(+), 665 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/767d65b9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java index c83039a..cb99652 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java @@ -34,8 +34,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; -import org.apache.tinkerpop.gremlin.process.traversal.step.Reading; -import org.apache.tinkerpop.gremlin.process.traversal.step.Writing; +import org.apache.tinkerpop.gremlin.process.traversal.step.ReadWriting; import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep; import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy; @@ -102,7 +101,7 @@ public final class VertexProgramStrategy extends AbstractTraversalStrategy computerTraversal = new DefaultTraversal<>(); final Step firstLegalOLAPStep = getFirstLegalOLAPStep(currentStep); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/767d65b9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java index 66b0236..ef3e841 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java @@ -36,7 +36,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.Path import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.CountStrategy; import
[40/45] tinkerpop git commit: Merge branch 'tp32' into tp33
Merge branch 'tp32' into tp33 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c49c0ccb Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c49c0ccb Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c49c0ccb Branch: refs/heads/TINKERPOP-1774 Commit: c49c0ccb3bce76caabb4b0a9c7efe9df43801b39 Parents: ddc6694 e3018fb Author: Stephen Mallette Authored: Tue Jul 31 08:35:24 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 08:35:24 2018 -0400 -- docs/src/dev/developer/development-environment.asciidoc | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c49c0ccb/docs/src/dev/developer/development-environment.asciidoc --
[10/45] tinkerpop git commit: TINKERPOP-1996 Removed OptOuts for read()/write() tests
TINKERPOP-1996 Removed OptOuts for read()/write() tests Not necessary because existing checks ignore these. For read() you can't write to a HadoopGraph directly (i.e. create vertices/edges) and for write() (and technically read()) it is ignored as it requires a GraphComputer to work. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/bd275a7f Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/bd275a7f Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/bd275a7f Branch: refs/heads/TINKERPOP-1774 Commit: bd275a7ffa4f0d04634c830aa4f7577375c7944c Parents: 9e4da01 Author: Stephen Mallette Authored: Fri Jul 13 11:37:21 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:09 2018 -0400 -- .../tinkerpop/gremlin/hadoop/structure/HadoopGraph.java | 10 -- 1 file changed, 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bd275a7f/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java -- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java index 5935ebf..14c5360 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java @@ -142,16 +142,6 @@ import java.util.stream.Stream; method = "g_V_matchXa_followedBy_count_isXgtX10XX_b__a_0followedBy_count_isXgtX10XX_bX_count", reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", computers = {"ALL"}) -@Graph.OptOut( -test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.ReadTest$Traversals", -method = "*", -reason = "This body of tests is not configured to properly suit OLAP based testing and HadoopGraph is not designed to handle single-threaded OLTP reads/writes.", -computers = {"ALL"}) -@Graph.OptOut( -test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.WriteTest$Traversals", -method = "*", -reason = "This body of tests is not configured to properly suit OLAP based testing and HadoopGraph is not designed to handle single-threaded OLTP reads/writes.", -computers = {"ALL"}) public final class HadoopGraph implements Graph { public static final Logger LOGGER = LoggerFactory.getLogger(HadoopGraph.class);
[29/45] tinkerpop git commit: TINKERPOP-1996 Added upgrade docs
TINKERPOP-1996 Added upgrade docs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ded7c187 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ded7c187 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ded7c187 Branch: refs/heads/TINKERPOP-1774 Commit: ded7c187480a68b6f7be2d0cb777461f57a2871c Parents: 8fd3bf2 Author: Stephen Mallette Authored: Fri Jul 20 11:20:03 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 11:20:03 2018 -0400 -- docs/src/upgrade/release-3.4.x.asciidoc | 49 ++-- 1 file changed, 47 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ded7c187/docs/src/upgrade/release-3.4.x.asciidoc -- diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc index 97e14e3..0bb3903 100644 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@ -36,7 +36,7 @@ modulator. This modulator allows the step it is modifying to accept configuratio behavior of the step itself. A good example of its usage is shown with the revised syntax of the `pageRank()` step which now uses `with()` to replace the old `by()` options: -[groovy] +[source,groovy] g.V().hasLabel('person'). pageRank(). @@ -49,7 +49,7 @@ g.V().hasLabel('person'). A similar change was made for `peerPressure()` step: -[groovy] +[source,groovy] g.V().hasLabel('person'). peerPressure(). @@ -65,6 +65,33 @@ release where breaking changes are allowed. See: link:https://issues.apache.org/jira/browse/TINKERPOP-1975[TINKERPOP-1975], link:http://tinkerpop.apache.org/docs/3.4.0/reference/#with-step[Reference Documentation] + io() Step + +There have been some important changes to IO operations for reading and writing graph data. The use of `Graph.io()` +has been deprecated to further remove dependence on the Graph (Structure) API for users and to extend these basic +operations to GLV users by making these features available as part of the Gremlin language. + +It is now possible to simply use Gremlin: + +[source,groovy] + +graph = ... +g = graph.traversal() +g.io(someInputFile).read().iterate() +g.io(someOutputFile).write().iterate() + + +While `io()` step is still single-threaded for OLTP style loading, it can be utilized in conjunction with OLAP which +internally uses `CloneVertexProgram` and therefore any graph `InputFormat` or `OutputFormat` can be configured in +conjunction with this step for parallel loads of large datasets. + +It is also worth noting that the `io()`-step may be overriden by graph providers to utilize their native bulk-loading +features, so consult the documentation of the implementation being used to determine if there are any improved +efficiencies there. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1996[TINKERPOP-1996], +link:http://tinkerpop.apache.org/docs/3.4.0/reference/#io-step[Reference Documentation] + Removal of Giraph Support Support for Giraph has been removed as of this version. There were a number of reasons for this decision which were @@ -284,6 +311,24 @@ See: link:https://issues.apache.org/jira/browse/TINKERPOP-1522[TINKERPOP-1522] Graph Database Providers += io() Step + +The new `io()`-step that was introduced provides some new changes to consider. Note that `Graph.io()` has been +deprecated and users are no longer instructed to utilize that method. It is not yet decided when that method will be +removed completely, but given the public nature of it and the high chance of common usage, it should be hanging around +for some time. + +As with any step in Gremlin, it is possible to replace it with a more provider specific implementation that could be +more efficient. Developing a `TraversalStrategy` to do this is encouraged, especially for those graph providers who +might have special bulk loaders that could be abstracted by this step. Examples of this are already shown with +`HadoopGraph` which replaces the simple single-threaded loader with `CloneVertexProgram`. Graph providers are +encouraged to use the `with()` step to capture any necessary configurations required for their underlying loader to +work. Graph providers should not feel restricted to `graphson`, `gryo` and `graphml` formats either. If a graph +supports CSV or some custom graph specific format, it shouldn't be difficult to gather the configurations necessary to +make that available to users. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1996[TINKERPOP-1996] + = Caching Graph Features For graph implementations that have expensive creation times, it can be time consuming to run the
[28/45] tinkerpop git commit: TINKERPOP-1996 Undeprecated some Io related classes
TINKERPOP-1996 Undeprecated some Io related classes These classes still have use as part of IoRegistry which is still in use and I don't see a clear way to get rid of that easily. We'd have to change the whole system for serialization configuration to accomplish that so I guess this stuff stays for now. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/8fd3bf21 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/8fd3bf21 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/8fd3bf21 Branch: refs/heads/TINKERPOP-1774 Commit: 8fd3bf21efac092f619254245ba83614327c4dcb Parents: c97d747 Author: Stephen Mallette Authored: Fri Jul 20 10:47:20 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 10:47:20 2018 -0400 -- .../main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java | 3 --- .../apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java | 3 --- .../tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java | 3 --- .../org/apache/tinkerpop/gremlin/structure/io/gryo/GryoIo.java| 3 --- 4 files changed, 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8fd3bf21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java index 0971e31..bae56c5 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java @@ -18,7 +18,6 @@ */ package org.apache.tinkerpop.gremlin.structure.io; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.structure.Graph; import java.io.IOException; @@ -32,9 +31,7 @@ import java.util.function.Consumer; * internal {@link Mapper} (if the format has such capability). * * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.4.0, replaced by {@link GraphTraversalSource#io(String)}. */ -@Deprecated public interface Io { /** http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8fd3bf21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java index b6af646..88431bf 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java @@ -18,7 +18,6 @@ */ package org.apache.tinkerpop.gremlin.structure.io.graphml; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.Io; import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; @@ -38,9 +37,7 @@ import java.util.function.Consumer; * such things. * * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.4.0, replaced by {@link GraphTraversalSource#io(String)}. */ -@Deprecated public final class GraphMLIo implements Io { private final Graph graph; private Optional> onMapper; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8fd3bf21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java index 7f8b835..a3923a1 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java @@ -18,7 +18,6 @@ */ package org.apache.tinkerpop.gremlin.structure.io.graphson; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.Io; import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; @@ -37,9 +36,7 @@ import java.util.function.Consumer; * interfaces should see the {@link GraphSONMapper} for information on the expectations for the {@link IoRegistry}.
[39/45] tinkerpop git commit: Added dev notes for python environment CTR
Added dev notes for python environment CTR Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e3018fb2 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e3018fb2 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e3018fb2 Branch: refs/heads/TINKERPOP-1774 Commit: e3018fb2e98df62a21272446f63cea5ee550408e Parents: 00a085a Author: Stephen Mallette Authored: Tue Jul 31 08:35:06 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 08:35:06 2018 -0400 -- docs/src/dev/developer/development-environment.asciidoc | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e3018fb2/docs/src/dev/developer/development-environment.asciidoc -- diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc index cde81c1..779f642 100644 --- a/docs/src/dev/developer/development-environment.asciidoc +++ b/docs/src/dev/developer/development-environment.asciidoc @@ -74,13 +74,14 @@ The site will be generated to the `target/site/home` directory. [[python-environment]] === Python Environment -As of TinkerPop 3.2.2, the build optionally requires link:https://www.python.org/[Python 2.x] to work with the -`gremlin-python` module. If Python is not installed, TinkerPop will still build with Maven, but native Python tests and +As of TinkerPop 3.2.2, the build optionally requires link:https://www.python.org/[Python] to build the `gremlin-python` +module. If Python is not installed, TinkerPop will still build with Maven, but native Python tests and Java tests that require Python code will be skipped. Developers should also install link:https://pypi.python.org/pypi/pip[pip] and link:https://virtualenv.pypa.io/en/stable/[virtualenv] (version 15.0.2 - older versions may cause build failures). -Once the Python environment is established, the full building and testing of `gremlin-python` may commence. It can be -done manually from the command line with: +The build expects two Python executables `python` and `python3` where `python` maps to 2.7.6 and `python3` is 3.4.3 or +higher. Once the Python environment is established, the full building and testing of `gremlin-python` may commence. It +can be done manually from the command line with: [source,text] mvn clean install -Pglv-python
[05/45] tinkerpop git commit: TINKERPOP-1996 Introduce read() and write() steps
TINKERPOP-1996 Introduce read() and write() steps Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ec1d05f7 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ec1d05f7 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ec1d05f7 Branch: refs/heads/TINKERPOP-1774 Commit: ec1d05f74fa875e4a07699dc89c3d1956aab586f Parents: ce73ceb Author: Stephen Mallette Authored: Fri Jun 29 15:04:17 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:39:29 2018 -0400 -- .../traversal/dsl/graph/GraphTraversal.java | 2 + .../dsl/graph/GraphTraversalSource.java | 17 +++ .../process/traversal/step/map/ReadStep.java| 112 +++ .../process/traversal/step/map/WriteStep.java | 111 ++ .../strategy/verification/IoUsageStrategy.java | 60 ++ .../verification/IoUsageStrategyTest.java | 93 +++ .../glv/GraphTraversalSource.template | 4 +- gremlin-dotnet/glv/generate.groovy | 5 +- .../Process/Traversal/GraphTraversalSource.cs | 22 .../lib/process/graph-traversal.js | 20 .../gremlin_python/process/graph_traversal.py | 10 ++ 11 files changed, 452 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec1d05f7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java index 63aa65d..210367f 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java @@ -2817,6 +2817,8 @@ public interface GraphTraversal extends Traversal { public static final String skip = "skip"; public static final String tail = "tail"; public static final String coin = "coin"; +public static final String read = "read"; +public static final String write = "write"; public static final String timeLimit = "timeLimit"; public static final String simplePath = "simplePath"; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec1d05f7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java index bc3ef9e..9b82108 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java @@ -31,6 +31,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStartStep; import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep; import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep; +import org.apache.tinkerpop.gremlin.process.traversal.step.map.ReadStep; +import org.apache.tinkerpop.gremlin.process.traversal.step.map.WriteStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.RequirementsStrategy; import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; @@ -40,6 +42,7 @@ import org.apache.tinkerpop.gremlin.structure.Transaction; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; +import java.util.Map; import java.util.Optional; import java.util.function.BinaryOperator; import java.util.function.Supplier; @@ -390,6 +393,20 @@ public class GraphTraversalSource implements TraversalSource { return traversal.addStep(new GraphStep<>(traversal, Edge.class, true, edgesIds)); } +public GraphTraversal, Map> read(final String localFile) { +final GraphTraversalSource clone = this.clone(); +clone.bytecode.addStep(GraphTraversal.Symbols.read, localFile); +final GraphTraversal.Admin, Map> traversal = new DefaultGraphTraversal<>(clone); +return traversal.addStep(new ReadStep(traversal,
[12/45] tinkerpop git commit: TINKERPOP-1996 Deprecated Graph.io() and related infrastructure.
TINKERPOP-1996 Deprecated Graph.io() and related infrastructure. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ae796378 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ae796378 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ae796378 Branch: refs/heads/TINKERPOP-1774 Commit: ae796378e07925f9385f3ec65c10022b59aab8b5 Parents: 328737a Author: Stephen Mallette Authored: Thu Jul 12 14:33:03 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:09 2018 -0400 -- CHANGELOG.asciidoc| 2 ++ .../main/java/org/apache/tinkerpop/gremlin/structure/Graph.java | 3 +++ .../main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java | 3 +++ .../java/org/apache/tinkerpop/gremlin/structure/io/IoCore.java| 3 +++ .../apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java | 3 +++ .../tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java | 3 +++ .../org/apache/tinkerpop/gremlin/structure/io/gryo/GryoIo.java| 3 +++ 7 files changed, 20 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae796378/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index c0cd27d..bc78bbe 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -27,6 +27,8 @@ This release also includes changes from <>. * Bumped to Netty 4.1.25. * Bumped to Spark 2.3.1. +* Added the `io()` start step and `read()` and `write()` termination steps to the Gremlin language. +* Deprecated `Graph.io()` and related infrastructure. * Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type. * Replaced `Parameterizing.addPropertyMutations()` with `Configuring.configure()`. * Changed interface hierarchy for `Parameterizing` and `Mutating` interfaces as they are tightly related. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae796378/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java index dc14cc6..f1fc54a 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java @@ -300,7 +300,10 @@ public interface Graph extends AutoCloseable, Host { * For those graphs that do not need to register any custom serializers, the default implementation should suffice. * If the default is overridden, take care to register the current graph via the * {@link org.apache.tinkerpop.gremlin.structure.io.Io.Builder#graph(Graph)} method. + * + * @deprecated As of release 3.4.0, replaced by {@link GraphTraversalSource#io(String)}. */ +@Deprecated public default I io(final Io.Builder builder) { return (I) builder.graph(this).create(); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae796378/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java index bae56c5..0971e31 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java @@ -18,6 +18,7 @@ */ package org.apache.tinkerpop.gremlin.structure.io; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.structure.Graph; import java.io.IOException; @@ -31,7 +32,9 @@ import java.util.function.Consumer; * internal {@link Mapper} (if the format has such capability). * * @author Stephen Mallette (http://stephen.genoprime.com) + * @deprecated As of release 3.4.0, replaced by {@link GraphTraversalSource#io(String)}. */ +@Deprecated public interface Io { /** http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae796378/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoCore.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoCore.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoCore.java index 9d9ad60..a357184 100644 ---
[02/45] tinkerpop git commit: TINKERPOP-1996 Added some javadoc and code formatting
TINKERPOP-1996 Added some javadoc and code formatting Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d181563d Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d181563d Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d181563d Branch: refs/heads/TINKERPOP-1774 Commit: d181563d24a401ac6550e06d86d78b12a8f16f51 Parents: 767d65b Author: Stephen Mallette Authored: Wed Jul 11 10:36:11 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:39:29 2018 -0400 -- .../traversal/dsl/graph/GraphTraversalSource.java | 14 ++ .../gremlin/process/traversal/step/ReadWriting.java | 8 .../gremlin/process/traversal/step/map/IoStep.java| 2 ++ .../computer/traversal/step/map/HadoopIoStep.java | 4 .../computer/traversal/strategy/HadoopIoStrategy.java | 7 +++ .../tinkergraph/structure/TinkerGraphPlayTest.java| 2 -- 6 files changed, 35 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d181563d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java index aa4995d..7357418 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java @@ -391,6 +391,20 @@ public class GraphTraversalSource implements TraversalSource { return traversal.addStep(new GraphStep<>(traversal, Edge.class, true, edgesIds)); } +/** + * Performs a read or write based operation on the {@link Graph} backing this {@code GraphTraversalSource}. This + * step can be accompanied by the {@link GraphTraversal#with(String, Object)} modulator for further configuration + * and must be accompanied by a {@link GraphTraversal#read()} or {@link GraphTraversal#write()} modulator step + * which will terminate the traversal. + * + * @param file the name of file for which the read or write will apply - note that the context of how this + * parameter is used is wholly dependent on the implementation + * @return the traversal with the {@link IoStep} added + * @see http://tinkerpop.apache.org/docs/${project.version}/reference/#io-step; target="_blank">Reference Documentation - IO Step + * @see http://tinkerpop.apache.org/docs/${project.version}/reference/#read-step; target="_blank">Reference Documentation - Read Step + * @see http://tinkerpop.apache.org/docs/${project.version}/reference/#write-step; target="_blank">Reference Documentation - Write Step + * @since 3.4.0 + */ public GraphTraversal io(final String file) { final GraphTraversalSource clone = this.clone(); clone.bytecode.addStep(GraphTraversal.Symbols.io, file); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d181563d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ReadWriting.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ReadWriting.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ReadWriting.java index 18de925..d0e8bbf 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ReadWriting.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ReadWriting.java @@ -18,11 +18,19 @@ */ package org.apache.tinkerpop.gremlin.process.traversal.step; +import org.apache.tinkerpop.gremlin.process.traversal.Step; +import org.apache.tinkerpop.gremlin.structure.Graph; + /** + * An interface that defines a {@link Step} as one that handles IO based operations for a {@link Graph}. + * * @author Stephen Mallette (http://stephen.genoprime.com) */ public interface ReadWriting extends Configuring { +/** + * Determines the mode of the the IO operation as being for reading or writing (or by default "unset") + */ public enum Mode { UNSET, READING, http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d181563d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/IoStep.java -- diff --git
[06/45] tinkerpop git commit: TINKERPOP-1996 read()/write() api changes for return type
TINKERPOP-1996 read()/write() api changes for return type No more weird Map status return for read() and write(). Both just work like a terminator and self iterate to return nothing. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d99909c4 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d99909c4 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d99909c4 Branch: refs/heads/TINKERPOP-1774 Commit: d99909c4e19fcb3ec3b8a8c94eb054a4332ad219 Parents: ff2773a Author: Stephen Mallette Authored: Tue Jul 10 14:53:52 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:39:29 2018 -0400 -- .../traversal/dsl/graph/GraphTraversalSource.java | 18 ++ .../process/traversal/step/map/ReadStep.java | 12 .../process/traversal/step/map/WriteStep.java | 13 - .../strategy/verification/IoUsageStrategy.java| 10 -- .../Process/Traversal/GraphTraversalSource.cs | 12 ++-- .../traversal/strategy/HadoopIoStrategy.java | 4 .../structure/TinkerGraphPlayTest.java| 10 ++ 7 files changed, 46 insertions(+), 33 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d99909c4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java index 9b82108..49e012f 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java @@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.computer.GraphComputer; import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection; import org.apache.tinkerpop.gremlin.process.remote.traversal.strategy.decoration.RemoteStrategy; import org.apache.tinkerpop.gremlin.process.traversal.Bytecode; +import org.apache.tinkerpop.gremlin.process.traversal.Step; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies; @@ -43,6 +44,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; import java.util.Map; +import java.util.NoSuchElementException; import java.util.Optional; import java.util.function.BinaryOperator; import java.util.function.Supplier; @@ -393,18 +395,18 @@ public class GraphTraversalSource implements TraversalSource { return traversal.addStep(new GraphStep<>(traversal, Edge.class, true, edgesIds)); } -public GraphTraversal, Map> read(final String localFile) { +public GraphTraversal read(final String file) { final GraphTraversalSource clone = this.clone(); -clone.bytecode.addStep(GraphTraversal.Symbols.read, localFile); -final GraphTraversal.Admin, Map> traversal = new DefaultGraphTraversal<>(clone); -return traversal.addStep(new ReadStep(traversal, localFile)); +clone.bytecode.addStep(GraphTraversal.Symbols.read, file); +final GraphTraversal.Admin traversal = new DefaultGraphTraversal<>(clone); +return traversal.addStep(new ReadStep(traversal, file)).iterate(); } -public GraphTraversal, Map> write(final String localFile) { +public GraphTraversal write(final String file) { final GraphTraversalSource clone = this.clone(); -clone.bytecode.addStep(GraphTraversal.Symbols.write, localFile); -final GraphTraversal.Admin, Map> traversal = new DefaultGraphTraversal<>(clone); -return traversal.addStep(new WriteStep(traversal, localFile)); +clone.bytecode.addStep(GraphTraversal.Symbols.write, file); +final GraphTraversal.Admin traversal = new DefaultGraphTraversal<>(clone); +return traversal.addStep(new WriteStep(traversal, file)).iterate(); } /** http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d99909c4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ReadStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ReadStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ReadStep.java index
[42/45] tinkerpop git commit: dedup build-helper-maven-plugin - CTR
dedup build-helper-maven-plugin - CTR Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/dfe79c24 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/dfe79c24 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/dfe79c24 Branch: refs/heads/TINKERPOP-1774 Commit: dfe79c24f4decb667ad20c729928a50f8cb1ec0b Parents: c49c0cc Author: Robert Dale Authored: Tue Jul 31 13:12:31 2018 -0400 Committer: Robert Dale Committed: Tue Jul 31 13:12:31 2018 -0400 -- pom.xml | 16 +--- 1 file changed, 1 insertion(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dfe79c24/pom.xml -- diff --git a/pom.xml b/pom.xml index b669872..f2629ad 100644 --- a/pom.xml +++ b/pom.xml @@ -305,6 +305,7 @@ limitations under the License. false + parse-version @@ -407,21 +408,6 @@ limitations under the License. - - -org.codehaus.mojo -build-helper-maven-plugin - 3.0.0 - - -parse-version - -parse-version - -validate - - - org.revapi revapi-maven-plugin
[31/45] tinkerpop git commit: TINKERPOP-1996 No need to assert io() against VertexProgramStrategy
TINKERPOP-1996 No need to assert io() against VertexProgramStrategy Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7f1bf178 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7f1bf178 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7f1bf178 Branch: refs/heads/TINKERPOP-1774 Commit: 7f1bf1783efb8a7eca17d0367af66c6289455fd8 Parents: e6e4413 Author: Stephen Mallette Authored: Fri Jul 20 11:52:13 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 11:52:13 2018 -0400 -- .../strategy/decoration/VertexProgramStrategyTest.java | 6 -- 1 file changed, 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7f1bf178/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java -- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java index d3bb6ef..8ceef48 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java @@ -43,7 +43,6 @@ import static org.junit.Assert.assertEquals; /** * @author Marko A. Rodriguez (http://markorodriguez.com) - * @author Stephen Mallette (http://stephen.genoprime.com) */ @RunWith(Parameterized.class) public class VertexProgramStrategyTest { @@ -68,12 +67,7 @@ public class VertexProgramStrategyTest { public static Iterable generateTestParameters() { final ComputerResultStep computerResultStep = new ComputerResultStep(EmptyTraversal.instance()); - -// The tests for io() need to verify that there is no change i.e. we don't want the step getting wrapped up in -// traversalvertexprogramstep stuff or else it won't execute properly in OLAP return Arrays.asList(new Traversal[][]{ -{ EmptyGraph.instance().traversal().io("blah.json"), EmptyGraph.instance().traversal().io("blah.json")}, -{ EmptyGraph.instance().traversal().io("blah.json"), EmptyGraph.instance().traversal().io("blah.json")}, {__.V().out().count(), start().addStep(traversal(__.V().out().count())).addStep(computerResultStep)}, {__.V().pageRank().out().count(), start().pageRank().asAdmin().addStep(traversal(__.V().out().count())).addStep(computerResultStep)}, {__.V().out().pageRank(), start().addStep(traversal(__.V().out())).pageRank().asAdmin().addStep(traversal(__.identity())).addStep(computerResultStep)},
[08/45] tinkerpop git commit: TINKERPOP-1996 Added IO to imports and javadoc fixes
TINKERPOP-1996 Added IO to imports and javadoc fixes Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/328737a3 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/328737a3 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/328737a3 Branch: refs/heads/TINKERPOP-1774 Commit: 328737a371f8a2040d02f9c2dbb06d049ce3c881 Parents: be9db8d Author: Stephen Mallette Authored: Thu Jul 12 11:19:10 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:39:30 2018 -0400 -- .../tinkerpop/gremlin/jsr223/CoreImports.java | 2 ++ .../tinkerpop/gremlin/process/traversal/IO.java | 34 2 files changed, 30 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/328737a3/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java index 9d7eb52..72ad47a 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java @@ -56,6 +56,7 @@ import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimiza import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection; import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph; import org.apache.tinkerpop.gremlin.process.traversal.Bindings; +import org.apache.tinkerpop.gremlin.process.traversal.IO; import org.apache.tinkerpop.gremlin.process.traversal.Operator; import org.apache.tinkerpop.gremlin.process.traversal.Order; import org.apache.tinkerpop.gremlin.process.traversal.P; @@ -184,6 +185,7 @@ public final class CoreImports { CLASS_IMPORTS.add(GraphReader.class); CLASS_IMPORTS.add(GraphWriter.class); CLASS_IMPORTS.add(Io.class); +CLASS_IMPORTS.add(IO.class); CLASS_IMPORTS.add(IoCore.class); CLASS_IMPORTS.add(Storage.class); CLASS_IMPORTS.add(GraphMLIo.class); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/328737a3/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java index f76c2bc..6668cf1 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java @@ -23,6 +23,12 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.GraphReader; import org.apache.tinkerpop.gremlin.structure.io.GraphWriter; +import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLReader; +import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLWriter; +import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader; +import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter; +import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader; +import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter; /** * Fields that can be provided to the {@link GraphTraversalSource#io(String)} using the @@ -34,21 +40,37 @@ public class IO { private IO() {} +/** + * A value to supply to {@link IO#reader} or {@link IO#writer} to indicate the format to use. Using this shorthand + * will configure a default {@link GraphSONReader} or {@link GraphSONWriter} respectively, + */ public static final String graphson = "graphson"; + +/** + * A value to supply to {@link IO#reader} or {@link IO#writer} to indicate the format to use. Using this shorthand + * will configure a default {@link GryoReader} or {@link GryoWriter} respectively, + */ public static final String gryo = "gryo"; + +/** + * A value to supply to {@link IO#reader} or {@link IO#writer} to indicate the format to use. Using this shorthand + * will configure a default {@link GraphMLReader} or {@link GraphMLWriter} respectively, + */ public static final String graphml = "graphml"; /** - * The specific {@link GraphReader} instance to use or the name of the fully qualified classname of such an - * instance. If this value is not specified then {@link GraphTraversalSource#io(String)} will attempt to construct - * a default {@link
[04/45] tinkerpop git commit: TINKERPOP-1996 Have the basics of OLAP read()/write() steps working
TINKERPOP-1996 Have the basics of OLAP read()/write() steps working This is still fairly skeletal at this point. Just trying to make sure things work properly before building read()/write() out fully. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/0785090f Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0785090f Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0785090f Branch: refs/heads/TINKERPOP-1774 Commit: 0785090f67ff88a834f77c7181a69594049c65ea Parents: ec1d05f Author: Stephen Mallette Authored: Tue Jul 10 12:21:52 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:39:29 2018 -0400 -- .../decoration/VertexProgramStrategy.java | 34 .../process/traversal/TraversalStrategies.java | 2 + .../gremlin/process/traversal/step/Reading.java | 27 +++ .../gremlin/process/traversal/step/Writing.java | 26 +++ .../process/traversal/step/map/ReadStep.java| 10 ++- .../process/traversal/step/map/WriteStep.java | 8 +- .../strategy/verification/IoUsageStrategy.java | 8 ++ .../decoration/VertexProgramStrategyTest.java | 3 + .../gremlin/process/ProcessStandardSuite.java | 2 + .../process/traversal/step/map/ReadTest.java| 64 +++ .../traversal/step/map/HadoopReadStep.java | 82 .../traversal/step/map/HadoopWriteStep.java | 82 .../traversal/strategy/HadoopIoStrategy.java| 68 .../gremlin/hadoop/structure/HadoopGraph.java | 8 ++ 14 files changed, 407 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0785090f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java index 89e40cb..c83039a 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java @@ -34,6 +34,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; +import org.apache.tinkerpop.gremlin.process.traversal.step.Reading; +import org.apache.tinkerpop.gremlin.process.traversal.step.Writing; import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep; import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy; @@ -100,23 +102,26 @@ public final class VertexProgramStrategy extends AbstractTraversalStrategy computerTraversal = new DefaultTraversal<>(); -Step firstLegalOLAPStep = getFirstLegalOLAPStep(currentStep); -Step lastLegalOLAPStep = getLastLegalOLAPStep(currentStep); -if (!(firstLegalOLAPStep instanceof EmptyStep)) { -int index = TraversalHelper.stepIndex(firstLegalOLAPStep, traversal); -TraversalHelper.removeToTraversal(firstLegalOLAPStep, lastLegalOLAPStep.getNextStep(), (Traversal.Admin) computerTraversal); -final TraversalVertexProgramStep traversalVertexProgramStep = new TraversalVertexProgramStep(traversal, computerTraversal); -traversal.addStep(index, traversalVertexProgramStep); -} -currentStep = traversal.getStartStep(); +if (!(currentStep instanceof Reading) && !(currentStep instanceof Writing)) { while (!(currentStep instanceof EmptyStep)) { -if (!(currentStep instanceof VertexComputing)) -break; -currentStep = currentStep.getNextStep(); +final Traversal.Admin computerTraversal = new DefaultTraversal<>(); +final Step firstLegalOLAPStep = getFirstLegalOLAPStep(currentStep); +final Step lastLegalOLAPStep = getLastLegalOLAPStep(currentStep); +if (!(firstLegalOLAPStep instanceof EmptyStep)) { +final int index = TraversalHelper.stepIndex(firstLegalOLAPStep, traversal); +TraversalHelper.removeToTraversal(firstLegalOLAPStep,
[09/45] tinkerpop git commit: TINKERPOP-1996 none() doesn't need to be removed in HadoopIoStrategy
TINKERPOP-1996 none() doesn't need to be removed in HadoopIoStrategy Not sure why this was there in the first place. Removing it not allows Hadoop integration tests to pass, but seems to have no real effect on existing operations. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/be9db8de Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/be9db8de Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/be9db8de Branch: refs/heads/TINKERPOP-1774 Commit: be9db8de6a9d2abb5222b7ab5b9326049060e85a Parents: 13e552b Author: Stephen Mallette Authored: Thu Jul 12 08:17:56 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:39:30 2018 -0400 -- .../process/computer/traversal/strategy/HadoopIoStrategy.java | 3 --- 1 file changed, 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/be9db8de/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java -- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java index 38d5a7f..89ee04b 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java @@ -60,9 +60,6 @@ public final class HadoopIoStrategy extends AbstractTraversalStrategy
[37/45] tinkerpop git commit: TINKERPOP-1996 Fixed up typos in docs
TINKERPOP-1996 Fixed up typos in docs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/10478be0 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/10478be0 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/10478be0 Branch: refs/heads/TINKERPOP-1774 Commit: 10478be0c9cabb6b20723c3185464977767172bc Parents: 38dc70d Author: Stephen Mallette Authored: Fri Jul 27 07:10:41 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 27 07:10:41 2018 -0400 -- docs/src/reference/the-traversal.asciidoc | 6 +++--- docs/src/upgrade/release-3.4.x.asciidoc | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/10478be0/docs/src/reference/the-traversal.asciidoc -- diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc index c861d87..d096933 100644 --- a/docs/src/reference/the-traversal.asciidoc +++ b/docs/src/reference/the-traversal.asciidoc @@ -1060,9 +1060,9 @@ job of the `io()`-step. By default, TinkerPop supports three formats for importi NOTE: Additional documentation for TinkerPop IO formats can be found in the link:http://tinkerpop.apache.org/docs/x.y.z/dev/io/[IO Reference]. -By itself the `io()` step merely configures the kind of importing and exporting that is going +By itself the `io()`-step merely configures the kind of importing and exporting that is going to occur and it is the follow-on call to the `read()` or `write()` step that determines which of those actions will -execute. Therefore, a typical usage of the `io()` step would look like this: +execute. Therefore, a typical usage of the `io()`-step would look like this: [source,java] @@ -1073,7 +1073,7 @@ g.io(someOutputFile).write().iterate() IMPORTANT: The commands above are still traversals and therefore require iteration to be executed, hence the use of `iterate()` as a termination step. -By default, the `io()` step will try to detect the right file format using the file name extension. To gain greater +By default, the `io()`-step will try to detect the right file format using the file name extension. To gain greater control of the format use the `with()` step modulator to provide further information to `io()`. For example: [source,java] http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/10478be0/docs/src/upgrade/release-3.4.x.asciidoc -- diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc index 0bb3903..8d87397 100644 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@ -81,7 +81,7 @@ g.io(someInputFile).read().iterate() g.io(someOutputFile).write().iterate() -While `io()` step is still single-threaded for OLTP style loading, it can be utilized in conjunction with OLAP which +While `io()`-step is still single-threaded for OLTP style loading, it can be utilized in conjunction with OLAP which internally uses `CloneVertexProgram` and therefore any graph `InputFormat` or `OutputFormat` can be configured in conjunction with this step for parallel loads of large datasets.
tinkerpop git commit: This closes #892
Repository: tinkerpop Updated Branches: refs/heads/master f50aeb6d6 -> b183edd10 This closes #892 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b183edd1 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b183edd1 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b183edd1 Branch: refs/heads/master Commit: b183edd10a52dc65022c0270951b5bd9f2b5be7e Parents: f50aeb6 Author: Stephen Mallette Authored: Tue Jul 31 15:54:01 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 15:54:01 2018 -0400 -- --
[24/50] tinkerpop git commit: TINKERPOP-1996 Testing for GraphSON and IoRegistry configuration
TINKERPOP-1996 Testing for GraphSON and IoRegistry configuration Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ae3f685a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ae3f685a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ae3f685a Branch: refs/heads/TINKERPOP-1967 Commit: ae3f685ad7af326c9f1282da296e9db49f94da03 Parents: 7f1bf17 Author: Stephen Mallette Authored: Fri Jul 20 11:55:09 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 11:55:09 2018 -0400 -- .../step/sideEffect/TinkerGraphIoStepTest.java | 23 1 file changed, 23 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae3f685a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphIoStepTest.java -- diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphIoStepTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphIoStepTest.java index 06c4db8..8bab7da 100644 --- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphIoStepTest.java +++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphIoStepTest.java @@ -72,4 +72,27 @@ public class TinkerGraphIoStepTest { assertEquals(1, emptyG.V().has("custom", new CustomId("a", uuid)).count().next().intValue()); } + +@Test +public void shouldWriteReadWithCustomIoRegistryGraphSON() throws Exception { +final UUID uuid = UUID.randomUUID(); +g.addV("person").property("name","stephen").property("custom", new CustomId("a", uuid)).iterate(); + +final File file = TestHelper.generateTempFile(TinkerGraphIoStepTest.class, "shouldWriteReadWithCustomIoRegistryGraphSON", ".json"); +g.io(file.getAbsolutePath()).with(IO.registry, CustomId.CustomIdIoRegistry.class.getName()).write().iterate(); + +final Graph emptyGraph = TinkerGraph.open(); +final GraphTraversalSource emptyG = emptyGraph.traversal(); + +try { +emptyG.io(file.getAbsolutePath()).read().iterate(); +fail("Can't read without a registry"); +} catch (Exception ignored) { +// do nothing +} + +emptyG.io(file.getAbsolutePath()).with(IO.registry, CustomId.CustomIdIoRegistry.instance()).read().iterate(); + +assertEquals(1, emptyG.V().has("custom", new CustomId("a", uuid)).count().next().intValue()); +} }
[44/50] tinkerpop git commit: TINKERPOP-1967 fixed up halted traversers
TINKERPOP-1967 fixed up halted traversers Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d34106d4 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d34106d4 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d34106d4 Branch: refs/heads/TINKERPOP-1967 Commit: d34106d4f29e3e050d2fceccbf06dba0e68d209d Parents: 669d9fc Author: Stephen Mallette Authored: Mon Jul 30 10:51:35 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 13:07:31 2018 -0400 -- .../ConnectedComponentVertexProgram.java| 42 +++- .../ConnectedComponentVertexProgramStep.java| 26 ++-- .../step/map/ConnectedComponentTest.java| 2 +- 3 files changed, 57 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d34106d4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/connected/ConnectedComponentVertexProgram.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/connected/ConnectedComponentVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/connected/ConnectedComponentVertexProgram.java index de718f1..82907eb 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/connected/ConnectedComponentVertexProgram.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/connected/ConnectedComponentVertexProgram.java @@ -32,7 +32,10 @@ import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexPr import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder; import org.apache.tinkerpop.gremlin.process.traversal.Operator; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; +import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; +import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.IndexedTraverserSet; +import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet; import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal; import org.apache.tinkerpop.gremlin.structure.Direction; import org.apache.tinkerpop.gremlin.structure.Edge; @@ -40,6 +43,8 @@ import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; +import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; @@ -61,12 +66,14 @@ public class ConnectedComponentVertexProgram implements VertexProgram { private static final String VOTE_TO_HALT = "gremlin.connectedComponentVertexProgram.voteToHalt"; private static final Set MEMORY_COMPUTE_KEYS = Collections.singleton(MemoryComputeKey.of(VOTE_TO_HALT, Operator.and, false, true)); + private MessageScope.Local scope = MessageScope.Local.of(__::bothE); private Set scopes; private String property = COMPONENT; -private boolean hasHalted = false; private PureTraversal edgeTraversal = null; private Configuration configuration; +private TraverserSet haltedTraversers; +private IndexedTraverserSet haltedTraversersIndex; private ConnectedComponentVertexProgram() {} @@ -85,7 +92,12 @@ public class ConnectedComponentVertexProgram implements VertexProgram { scopes = new HashSet<>(Collections.singletonList(scope)); this.property = configuration.getString(PROPERTY, COMPONENT); -this.hasHalted = configuration.getBoolean(HAS_HALTED, false); + +this.haltedTraversers = TraversalVertexProgram.loadHaltedTraversers(configuration); +this.haltedTraversersIndex = new IndexedTraverserSet<>(v -> v); +for (final Traverser.Admin traverser : this.haltedTraversers) { +this.haltedTraversersIndex.add(traverser.split()); +} } @Override @@ -104,6 +116,8 @@ public class ConnectedComponentVertexProgram implements VertexProgram { @Override public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) { if (memory.isInitialIteration()) { +copyHaltedTraversersFromMemory(vertex); + // on the first pass, just initialize the component to its own id then pass it to all adjacent vertices // for evaluation vertex.property(VertexProperty.Cardinality.single, property, vertex.id().toString()); @@ -113,7 +127,7 @@ public class ConnectedComponentVertexProgram implements
[04/50] tinkerpop git commit: TINKERPOP-1996 Deprecated Graph.io() and related infrastructure.
TINKERPOP-1996 Deprecated Graph.io() and related infrastructure. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ae796378 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ae796378 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ae796378 Branch: refs/heads/TINKERPOP-1967 Commit: ae796378e07925f9385f3ec65c10022b59aab8b5 Parents: 328737a Author: Stephen Mallette Authored: Thu Jul 12 14:33:03 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:09 2018 -0400 -- CHANGELOG.asciidoc| 2 ++ .../main/java/org/apache/tinkerpop/gremlin/structure/Graph.java | 3 +++ .../main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java | 3 +++ .../java/org/apache/tinkerpop/gremlin/structure/io/IoCore.java| 3 +++ .../apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java | 3 +++ .../tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java | 3 +++ .../org/apache/tinkerpop/gremlin/structure/io/gryo/GryoIo.java| 3 +++ 7 files changed, 20 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae796378/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index c0cd27d..bc78bbe 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -27,6 +27,8 @@ This release also includes changes from <>. * Bumped to Netty 4.1.25. * Bumped to Spark 2.3.1. +* Added the `io()` start step and `read()` and `write()` termination steps to the Gremlin language. +* Deprecated `Graph.io()` and related infrastructure. * Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type. * Replaced `Parameterizing.addPropertyMutations()` with `Configuring.configure()`. * Changed interface hierarchy for `Parameterizing` and `Mutating` interfaces as they are tightly related. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae796378/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java index dc14cc6..f1fc54a 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java @@ -300,7 +300,10 @@ public interface Graph extends AutoCloseable, Host { * For those graphs that do not need to register any custom serializers, the default implementation should suffice. * If the default is overridden, take care to register the current graph via the * {@link org.apache.tinkerpop.gremlin.structure.io.Io.Builder#graph(Graph)} method. + * + * @deprecated As of release 3.4.0, replaced by {@link GraphTraversalSource#io(String)}. */ +@Deprecated public default I io(final Io.Builder builder) { return (I) builder.graph(this).create(); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae796378/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java index bae56c5..0971e31 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java @@ -18,6 +18,7 @@ */ package org.apache.tinkerpop.gremlin.structure.io; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.structure.Graph; import java.io.IOException; @@ -31,7 +32,9 @@ import java.util.function.Consumer; * internal {@link Mapper} (if the format has such capability). * * @author Stephen Mallette (http://stephen.genoprime.com) + * @deprecated As of release 3.4.0, replaced by {@link GraphTraversalSource#io(String)}. */ +@Deprecated public interface Io { /** http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae796378/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoCore.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoCore.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoCore.java index 9d9ad60..a357184 100644 ---
[33/50] tinkerpop git commit: Bumped default Xmx on Gremlin Server
Bumped default Xmx on Gremlin Server Seems like the default is too small for anything but the toy graphs and people getting started who aren't JVM experts keep running into problems CTR Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2b045f30 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2b045f30 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2b045f30 Branch: refs/heads/TINKERPOP-1967 Commit: 2b045f30db0577464f1ff353464c7cf5d3c41746 Parents: 3b8c828 Author: Stephen Mallette Authored: Mon Jul 30 07:14:42 2018 -0400 Committer: Stephen Mallette Committed: Mon Jul 30 07:14:42 2018 -0400 -- gremlin-server/src/main/bin/gremlin-server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2b045f30/gremlin-server/src/main/bin/gremlin-server.sh -- diff --git a/gremlin-server/src/main/bin/gremlin-server.sh b/gremlin-server/src/main/bin/gremlin-server.sh index fcede2b..06b065a 100755 --- a/gremlin-server/src/main/bin/gremlin-server.sh +++ b/gremlin-server/src/main/bin/gremlin-server.sh @@ -50,7 +50,7 @@ fi # Set Java options if [ "$JAVA_OPTIONS" = "" ] ; then -JAVA_OPTIONS="-Xms32m -Xmx512m" +JAVA_OPTIONS="-Xms512m -Xmx4096m" fi # Execute the application and return its exit code
[18/50] tinkerpop git commit: TINKERPOP-1996 Pass configurations from with() through to Hadoop
TINKERPOP-1996 Pass configurations from with() through to Hadoop This will allow users to override or add to the Hadoop/Spark/OLAP configuration as needed Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/4d979cf8 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/4d979cf8 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/4d979cf8 Branch: refs/heads/TINKERPOP-1967 Commit: 4d979cf8dc4482d574191a76a0c60e281f887563 Parents: 51dc821 Author: Stephen Mallette Authored: Fri Jul 20 07:35:48 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 07:35:48 2018 -0400 -- .../traversal/step/sideEffect/HadoopIoStep.java | 29 ++-- 1 file changed, 27 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4d979cf8/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/step/sideEffect/HadoopIoStep.java -- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/step/sideEffect/HadoopIoStep.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/step/sideEffect/HadoopIoStep.java index ca369b6..2e96276 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/step/sideEffect/HadoopIoStep.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/step/sideEffect/HadoopIoStep.java @@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.computer.clone.CloneVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.VertexProgramStep; import org.apache.tinkerpop.gremlin.process.traversal.IO; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.step.ReadWriting; import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters; @@ -37,7 +38,9 @@ import org.apache.tinkerpop.gremlin.structure.util.StringFactory; /** * An OLAP oriented step for doing IO operations with {@link GraphTraversalSource#io(String)} which uses the - * {@link CloneVertexProgram} for its implementation. + * {@link CloneVertexProgram} for its implementation. Standard Hadoop OLAP configurations can be passed using the + * {@link GraphTraversal#with(String, Object)} step modulator as all options aside from those in {@link IO} will be + * transferred. * * @author Stephen Mallette (http://stephen.genoprime.com) */ @@ -69,7 +72,6 @@ public class HadoopIoStep extends VertexProgramStep implements ReadWriting { @Override public void configure(final Object... keyValues) { -// TODO: probably should write to the Configuration selectively - no need for actual Parameters? this.parameters.set(null, keyValues); } @@ -121,6 +123,8 @@ public class HadoopIoStep extends VertexProgramStep implements ReadWriting { graph.configuration().setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, inputFormatClassName); graph.configuration().setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, file); + +addParametersToConfiguration(graph); } private void configureForWrite(final Graph graph) { @@ -137,6 +141,27 @@ public class HadoopIoStep extends VertexProgramStep implements ReadWriting { graph.configuration().setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, outputFormatClassName); graph.configuration().setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, file); + +addParametersToConfiguration(graph); +} + +/** + * Overwrites all configurations from values passed using {@link GraphTraversal#with(String, Object)}. + */ +private void addParametersToConfiguration(final Graph graph) { +parameters.getRaw(IO.writer, IO.writer, IO.registry).entrySet().forEach(kv -> { +if (kv.getValue().size() == 1) +graph.configuration().setProperty(kv.getKey().toString(), kv.getValue().get(0)); +else { +// reset the default configuration with the first option then add to that for List options +for (int ix = 0; ix < kv.getValue().size(); ix++) { +if (ix == 0) + graph.configuration().setProperty(kv.getKey().toString(), kv.getValue().get(ix)); +else + graph.configuration().addProperty(kv.getKey().toString(),
[50/50] tinkerpop git commit: TINKERPOP-1967 Added a component field to the ConnectedComponent class
TINKERPOP-1967 Added a component field to the ConnectedComponent class In this way the user can access the default more readily and is available in GLVs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/669d9fc7 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/669d9fc7 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/669d9fc7 Branch: refs/heads/TINKERPOP-1967 Commit: 669d9fc7ca2cc804288cd825b564ab35cf6bd8f7 Parents: 7fd7afd Author: Stephen Mallette Authored: Mon Jul 30 08:29:13 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 13:07:31 2018 -0400 -- docs/src/recipes/connected-components.asciidoc| 5 - .../computer/traversal/step/map/ConnectedComponent.java | 7 +++ 2 files changed, 11 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/669d9fc7/docs/src/recipes/connected-components.asciidoc -- diff --git a/docs/src/recipes/connected-components.asciidoc b/docs/src/recipes/connected-components.asciidoc index e6d0f7a..c46180f 100644 --- a/docs/src/recipes/connected-components.asciidoc +++ b/docs/src/recipes/connected-components.asciidoc @@ -64,10 +64,13 @@ The traversal looks like: [gremlin-groovy,existing] g.withComputer().V().connectedComponent(). -group().by('gremlin.connectedComponentVertexProgram.component'). +group().by(component). select(values).unfold() +NOTE: The `component` option passed to `by()` is statically imported from `ConnectedComponent` and refers to the +default property key within which the result of the algorithm is stored. + A straightforward way to detect the various subgraphs with an OLTP traversal is to do this: [gremlin-groovy,existing] http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/669d9fc7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ConnectedComponent.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ConnectedComponent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ConnectedComponent.java index 85558bc..a2223d8 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ConnectedComponent.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ConnectedComponent.java @@ -18,6 +18,7 @@ */ package org.apache.tinkerpop.gremlin.process.computer.traversal.step.map; +import org.apache.tinkerpop.gremlin.process.computer.clustering.connected.ConnectedComponentVertexProgram; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import org.apache.tinkerpop.gremlin.structure.Graph; @@ -26,6 +27,12 @@ import org.apache.tinkerpop.gremlin.structure.Graph; * {@link GraphTraversal#connectedComponent()} ()}. */ public class ConnectedComponent { + +/** + * The default property key name that will hold the result of the algorithm. + */ +public static final String component = ConnectedComponentVertexProgram.COMPONENT; + /** * Configures the edge to traverse when calculating the pagerank. */
[12/50] tinkerpop git commit: TINKERPOP-1996 Used g.io() in tests by default
TINKERPOP-1996 Used g.io() in tests by default Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/81870168 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/81870168 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/81870168 Branch: refs/heads/TINKERPOP-1967 Commit: 8187016886b8b699ff107c9b6a7dfe95deb7e4a1 Parents: 5bf19e2 Author: Stephen Mallette Authored: Mon Jul 16 12:10:02 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:41:01 2018 -0400 -- CHANGELOG.asciidoc | 5 ++-- .../gremlin/AbstractGraphProvider.java | 8 +++ .../apache/tinkerpop/gremlin/TestHelper.java| 24 ++-- 3 files changed, 24 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/81870168/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 1add03c..1848421 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -25,11 +25,12 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima This release also includes changes from <>. -* Bumped to Netty 4.1.25. -* Bumped to Spark 2.3.1. +* `AbstractGraphProvider` uses `g.io()` for loading test data. * Added the `io()` start step and `read()` and `write()` termination steps to the Gremlin language. * Added `GraphFeatures.supportsIoRead()` and `GraphFeatures.supportsIoWrite()`. * Deprecated `Graph.io()` and related infrastructure. +* Bumped to Netty 4.1.25. +* Bumped to Spark 2.3.1. * Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type. * Replaced `Parameterizing.addPropertyMutations()` with `Configuring.configure()`. * Changed interface hierarchy for `Parameterizing` and `Mutating` interfaces as they are tightly related. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/81870168/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGraphProvider.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGraphProvider.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGraphProvider.java index 75d033b..b6fc43c 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGraphProvider.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGraphProvider.java @@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo; import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader; import org.apache.commons.configuration.BaseConfiguration; import org.apache.commons.configuration.Configuration; +import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoResourceAccess; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -142,9 +143,8 @@ public abstract class AbstractGraphProvider implements GraphProvider { * @param path the path to the file to load into the graph */ protected void readIntoGraph(final Graph graph, final String path) throws IOException { -final GraphReader reader = GryoReader.build().create(); -try (final InputStream stream = AbstractGremlinTest.class.getResourceAsStream(path)) { -reader.readGraph(stream, graph); -} +final String dataFile = TestHelper.generateTempFileFromResource(graph.getClass(), +GryoResourceAccess.class, path.substring(path.lastIndexOf(File.separator) + 1), "", false).getAbsolutePath(); +graph.traversal().io(dataFile).read(); } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/81870168/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java index 38d9a25..cda32e2 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java @@ -152,17 +152,27 @@ public final class TestHelper { * {@link TestHelper#makeTestDataPath} in a subdirectory called {@code temp/resources}. */ public static File generateTempFileFromResource(final Class graphClass, final Class resourceClass, final String resourceName, final String extension) throws IOException { +return generateTempFileFromResource(graphClass, resourceClass, resourceName, extension, true); +} + +/** + * Copies a file stored as part of a resource to the file system in the
[31/50] tinkerpop git commit: Merge branch 'tp32' into tp33
Merge branch 'tp32' into tp33 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/79851067 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/79851067 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/79851067 Branch: refs/heads/TINKERPOP-1967 Commit: 798510679b5af84ffc1ecdfa5ef86d52229cbc99 Parents: 9b693c0 3b8c828 Author: Stephen Mallette Authored: Fri Jul 27 16:29:37 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 27 16:29:37 2018 -0400 -- docs/src/recipes/element-existence.asciidoc | 91 docs/src/recipes/index.asciidoc | 2 + 2 files changed, 93 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/79851067/docs/src/recipes/index.asciidoc --
[46/50] tinkerpop git commit: Extended the connected-components recipe
Extended the connected-components recipe Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3ef1661c Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3ef1661c Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3ef1661c Branch: refs/heads/TINKERPOP-1967 Commit: 3ef1661cf330b4c4bd610aec4f1337f7ac5e30d9 Parents: 3298474 Author: HadoopMarc Authored: Sun Jun 10 15:17:17 2018 +0200 Committer: Stephen Mallette Committed: Tue Jul 31 13:07:31 2018 -0400 -- docs/src/recipes/connected-components.asciidoc | 94 docs/static/images/cc-scale-ratio.png | Bin 0 -> 14393 bytes docs/static/images/cc-scale-size.png | Bin 0 -> 12220 bytes 3 files changed, 58 insertions(+), 36 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3ef1661c/docs/src/recipes/connected-components.asciidoc -- diff --git a/docs/src/recipes/connected-components.asciidoc b/docs/src/recipes/connected-components.asciidoc index edbeec5..850c31f 100644 --- a/docs/src/recipes/connected-components.asciidoc +++ b/docs/src/recipes/connected-components.asciidoc @@ -31,11 +31,11 @@ Depending on the size of the graph, three solution regimes can be discriminated: 1. Small graphs that fit in the memory of a single machine -2. Medium graphs backed by storage for which a linear scan is still feasible. This regime is left to third party +2. Medium-sized graphs backed by storage for which an OLTP linear scan is still feasible. This regime is left to third party TinkerPop implementations, since TinkerPop itself has no storage-backed reference implementations. The idea is that component membership is stored in the graph, rather than in memory. -3. Large graphs requiring an OLAP approach to yield results in a reasonable time. +3. Large graphs requiring an approach with `HadoopGraph` and `SparkGraphComputer` to yield results in a reasonable time. These regimes are discussed separately using the following graph with three weakly connected components: @@ -55,16 +55,21 @@ g.addV().property(id, "A").as("a"). addE("link").from("d").to("e").iterate() + Small graph traversals -= Small graphs - -Connected components in a small graph can be determined with both an OLTP traversal and the OLAP +Connected components in a small graph can be determined with either an OLTP traversal or the OLAP `connectedComponent()`-step. The `connectedComponent()`-step is available as of TinkerPop 3.4.0 and is described in more detail in the link:http://tinkerpop.apache.org/docs/x.y.z/reference/#connectedcomponent-step[Reference Documentation]. +The traversal looks like: +[gremlin-groovy,existing] + +g.withComputer().V().connectedComponent(). +group().by('gremlin.connectedComponentVertexProgram.component'). +select(values).unfold() + A straightforward way to detect the various subgraphs with an OLTP traversal is to do this: - [gremlin-groovy,existing] g.V().emit(cyclicPath().or().not(both())). <1> @@ -73,7 +78,6 @@ g.V().emit(cyclicPath().or().not(both())). <1 by(path().unfold().dedup().fold()). <4> select(values).unfold() <5> - <1> The initial emit() step allows for output of isolated vertices, in addition to the discovery of components as described in (2). @@ -83,7 +87,7 @@ path. Collection `'a'` is used to keep track of visited vertices, for both subt and new traversals resulting from the `g.V()` linear scan. <3> While `'a'` nicely keeps track of vertices already visited, the actual components need to be extracted from the -path information of surviving traversers. The `path().unfold().limit(1)` closure provides the starting vertex +path information. The `path().unfold().limit(1)` closure provides the starting vertex of surviving traversers, which can be used to group the components. <4> This clause collects the unique vertices from all paths with the same starting vertex, thus from the same @@ -91,39 +95,57 @@ weak component. <5> The values of the groupby map contain the lists of vertices making up the requested components. -This algorithm completes in linear time with the number of vertices and edges, because a traversal is started for each -vertex and each edge with its associated out-vertex is visited exactly once. - - Large graphs -Large graphs require an OLAP solution with a custom VertexProgram that can be run using a graph implementation's -GraphComputer, in particular `SparkGraphComputer` on a `HadoopGraph`. The OLAP solution also runs
[03/50] tinkerpop git commit: TINKERPOP-1996 Fixed a bad method call for Configuring steps
TINKERPOP-1996 Fixed a bad method call for Configuring steps Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9e4da014 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9e4da014 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9e4da014 Branch: refs/heads/TINKERPOP-1967 Commit: 9e4da0149247a50277e2a468b0becf892426ce2e Parents: ae79637 Author: Stephen Mallette Authored: Fri Jul 13 11:37:02 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:09 2018 -0400 -- .../process/computer/traversal/strategy/HadoopIoStrategy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9e4da014/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java -- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java index 89ee04b..6d3899e 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java @@ -55,7 +55,7 @@ public final class HadoopIoStrategy extends AbstractTraversalStrategy -hadoopIoStep.configure(null, kv.getKey(), kv.getValue()) +hadoopIoStep.configure(kv.getKey(), kv.getValue()) ); TraversalHelper.replaceStep((Step) readWriting, hadoopIoStep, traversal);
[43/50] tinkerpop git commit: Merged vtslab recipe for connected components
Merged vtslab recipe for connected components Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3298474a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3298474a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3298474a Branch: refs/heads/TINKERPOP-1967 Commit: 3298474afc452de3ce9d2c04f6b8fbd3e3f6c744 Parents: 2e6b45a Author: HadoopMarc Authored: Mon May 21 14:03:54 2018 +0200 Committer: Stephen Mallette Committed: Tue Jul 31 13:07:31 2018 -0400 -- docs/src/recipes/connected-components.asciidoc | 123 +--- 1 file changed, 83 insertions(+), 40 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3298474a/docs/src/recipes/connected-components.asciidoc -- diff --git a/docs/src/recipes/connected-components.asciidoc b/docs/src/recipes/connected-components.asciidoc index 70abdbd..edbeec5 100644 --- a/docs/src/recipes/connected-components.asciidoc +++ b/docs/src/recipes/connected-components.asciidoc @@ -14,17 +14,31 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +// @author Daniel Kuppitz (anwer on gremlin user list) +// @author Robert Dale (answer on gremlin user list) +// @author Marc de Lignie + [[connected-components]] == Connected Components Gremlin can be used to find link:https://en.wikipedia.org/wiki/Connected_component_(graph_theory)[connected components] -in a graph. As of TinkerPop 3.4.0, the process has been simplified to the `connectedComponent()`-step which is -described in more detail in the link: -link:http://tinkerpop.apache.org/docs/x.y.z/reference/#connectedcomponent-step[Reference Documentation]. +in a graph. In a directed graph like in TinkerPop, components can be weakly or strongly connected. This recipe is +restricted to finding link:https://en.wikipedia.org/wiki/Directed_graph#Directed_graph_connectivity[weakly +connected components], in which the direction of edges is not taken into account. + +Depending on the size of the graph, three solution regimes can be discriminated: + +1. Small graphs that fit in the memory of a single machine + +2. Medium graphs backed by storage for which a linear scan is still feasible. This regime is left to third party +TinkerPop implementations, since TinkerPop itself has no storage-backed reference implementations. The idea is that +component membership is stored in the graph, rather than in memory. -The `connectedComponent()`-step replaces the original recipe described below from earlier versions of TinkerPop, -however the algorithm from that old recipe remains interesting for educational purposes and has thus not been removed. -The original recipe considers the following graph which has three connected components: +3. Large graphs requiring an OLAP approach to yield results in a reasonable time. + + +These regimes are discussed separately using the following graph with three weakly connected components: image:connected-components.png[width=600] @@ -41,46 +55,75 @@ g.addV().property(id, "A").as("a"). addE("link").from("d").to("e").iterate() -One way to detect the various subgraphs would be to do something like this: + += Small graphs + +Connected components in a small graph can be determined with both an OLTP traversal and the OLAP +`connectedComponent()`-step. The `connectedComponent()`-step is available as of TinkerPop 3.4.0 and is +described in more detail in the +link:http://tinkerpop.apache.org/docs/x.y.z/reference/#connectedcomponent-step[Reference Documentation]. + +A straightforward way to detect the various subgraphs with an OLTP traversal is to do this: [gremlin-groovy,existing] -g.V().emit(cyclicPath().or().not(both())).repeat(both()).until(cyclicPath()). <1> - path().aggregate("p"). <2> - unfold().dedup(). <3> - map(__.as("v").select("p").unfold(). <4> - filter(unfold().where(eq("v"))). - unfold().dedup().order().by(id).fold()). - dedup() <5> +g.V().emit(cyclicPath().or().not(both())). <1> +repeat(__.where(without('a')).store('a').both()).until(cyclicPath()). <2> +group().by(path().unfold().limit(1)). <3> +by(path().unfold().dedup().fold()). <4> +select(values).unfold() <5> -<1>
[17/50] tinkerpop git commit: TINKERPOP-1996 Added some docs around IO.registry
TINKERPOP-1996 Added some docs around IO.registry Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/51dc8212 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/51dc8212 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/51dc8212 Branch: refs/heads/TINKERPOP-1967 Commit: 51dc82122af6b8d8c783de58a0451b8b2071c051 Parents: 9423397 Author: Stephen Mallette Authored: Fri Jul 20 07:15:07 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 07:15:07 2018 -0400 -- docs/src/reference/the-traversal.asciidoc | 30 ++ 1 file changed, 30 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/51dc8212/docs/src/reference/the-traversal.asciidoc -- diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc index cd2f5f2..c3b9300 100644 --- a/docs/src/reference/the-traversal.asciidoc +++ b/docs/src/reference/the-traversal.asciidoc @@ -1114,6 +1114,36 @@ IMPORTANT: Remote Gremlin Console users or Gremlin Language Variant (GLV) users the `io()` step should recall that their `read()` or `write()` operation will occur on the server and not locally and therefore the file specified for import/export must be something accessible by the server. +GraphSON and Gryo formats are extensible allowing users and graph providers to extend supported serialization options. +These extensions are exposed through `IoRegistry` implementations. To apply an `IoRegistry` use the `with()` option +and the `IO.registry` key, where the value is either an actual `IoRegistry` instance or the fully qualified class +name of one. + +[source,java] + +g.io(someInputFile). +with(IO.reader, IO.gryo). +with(IO.registry, TinkerIoRegistryV3d0.instance()) + read().iterate() +g.io(someOutputFile). +with(IO.writer,IO.graphson). +with(IO.registry, "org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0") + write().iterate() + + +GLVs will obviously always be forced to use the latter form as they can't explicitly create an instance of an +`IoRegistry` to pass to the server (nor are `IoRegistry` instances necessarily serializable). + +The version of the formats (e.g. GraphSON 2.0 or 3.0) utilized by `io()` is determined entirely by the `IO.reader` and +`IO.writer` configurations or their defaults. The defaults will always be the latest version for the current release +of TinkerPop. It is also possible for graph providers to override these defaults, so consult the documentation of the +underlying graph database in use for any details on that. + +For more advanced configuration of `GraphReader` and `GraphWriter` operations (e.g. normalized output for GraphSON, +disabling class registrations for Gryo, etc.) then construct the appropriate `GraphReader` and `GraphWriter` using +the `build()` method on their implementations and use it directly. It can be passed directly to the `IO.reader` or +`IO.writer` options. Obviously, these are JVM based operations and thus not available to GLVs as portable features. + [[_graphml_reader_writer]] [[graphml]] GraphML
tinkerpop git commit: translated shortest path recipes into their respective OLAP version using the new shortestPath() step
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1990 c029157a9 -> 7f5e71eda translated shortest path recipes into their respective OLAP version using the new shortestPath() step Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7f5e71ed Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7f5e71ed Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7f5e71ed Branch: refs/heads/TINKERPOP-1990 Commit: 7f5e71eda83109c8381087268973a969dbb1f8c5 Parents: c029157 Author: Daniel Kuppitz Authored: Tue Jul 31 10:58:09 2018 -0700 Committer: Daniel Kuppitz Committed: Tue Jul 31 10:58:09 2018 -0700 -- docs/src/recipes/shortest-path.asciidoc | 63 1 file changed, 63 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7f5e71ed/docs/src/recipes/shortest-path.asciidoc -- diff --git a/docs/src/recipes/shortest-path.asciidoc b/docs/src/recipes/shortest-path.asciidoc index 2e33055..e25d777 100644 --- a/docs/src/recipes/shortest-path.asciidoc +++ b/docs/src/recipes/shortest-path.asciidoc @@ -48,6 +48,17 @@ course, it is possible for there to be more than one path in the graph of the sa length three), but this example is not considering that. <2> It might be interesting to know the path lengths for all paths between vertex "1" and "5". <3> Alternatively, one might wish to do a path length distribution over all the paths. +<4> The preferred way to get a shortest path in OLAP is the `shortestPath()` step. + +The following code block demonstrates how the shortest path from `v[1]` to `v[5]` can be queried in OLAP, using the `shortestPath()` step. + +[gremlin-groovy,existing] + +g = g.withComputer() +g.V(1).shortestPath(). + with(ShortestPath.edges, Direction.OUT). + with(ShortestPath.target, hasId(5)) + The previous example defines the length of the path by the number of vertices in the path, but the "path" might also be measured by data within the graph itself. The following example use the same graph structure as the previous example, @@ -95,6 +106,17 @@ calculated cost. With some slight modifications given the use of `select` it bec the output. Note that the path with the lowest "cost" actually has a longer path length as determined by the graph structure. +The next code block demonstrates how the `shortestPath()` step can be used in OLAP to determine the shortest weighted path. + +[gremlin-groovy,existing] + +g = g.withComputer() +g.V(1).shortestPath(). + with(ShortestPath.edges, Direction.OUT). + with(ShortestPath.distance, 'weight'). + with(ShortestPath.target, hasId(5)) + + The following query illustrates how `select()` can be used to find all shortest weighted undirected paths in the modern toy graph. @@ -136,3 +158,44 @@ g.withSack(0.0).V().as("from"). <1> <7> Order the output by the start vertex id and then the end vertex id (for better readability). <8> Deduplicate vertex pairs (the shortest path from `v[1]` to `v[6]` is the same as the path from `v[6]` to `v[1]`). +Again, this can be translated into an OLAP query using the `shortestPath()` step. + +[gremlin-groovy,existing] + +result = g.withComputer().V(). + shortestPath(). +with(ShortestPath.distance, 'weight'). +with(ShortestPath.includeEdges, true). + filter(count(local).is(gt(1))). + group(). +by(project('from','to'). + by(limit(local, 1)). + by(tail(local, 1))). + unfold(). + order(). +by(select(keys).select('from').id()). +by(select(keys).select('to').id()).toList() + + +The obvious difference in the result is the absence of property values in the OLAP result. Since OLAP traversers are not +allowed to leave the local star graph, it's not possible to have the exact same result in an OLAP query. However, the determined +shortest paths can be passed back into the OLTP `GraphTraversalSource`, which can then be used to query the values. + +[gremlin-groovy,existing] + +g.withSideEffect('v', []).<1> + inject(result.toArray()).as('kv').select(values). + unfold(). + map(unfold().as('v_or_e'). + coalesce(V().where(eq('v_or_e')).store('v'), + select('v').tail(local, 1).bothE().where(eq('v_or_e'))). + values('name','weight'). + fold()). + group(). +by(select('kv').select(keys)).unfold(). + order(). +by(select(keys).select('from').id()). +by(select(keys).select('to').id()).toList() + + +<1> The side-effect `v` is used to keep track of the last processed vertex, hence it needs to be an order-preserving list. Without this explicit definition `v` would become a `BulkSet` which doesn't preserve the insert order.
[02/50] tinkerpop git commit: TINKERPOP-1996 Removed OptOuts for read()/write() tests
TINKERPOP-1996 Removed OptOuts for read()/write() tests Not necessary because existing checks ignore these. For read() you can't write to a HadoopGraph directly (i.e. create vertices/edges) and for write() (and technically read()) it is ignored as it requires a GraphComputer to work. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/bd275a7f Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/bd275a7f Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/bd275a7f Branch: refs/heads/TINKERPOP-1967 Commit: bd275a7ffa4f0d04634c830aa4f7577375c7944c Parents: 9e4da01 Author: Stephen Mallette Authored: Fri Jul 13 11:37:21 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:09 2018 -0400 -- .../tinkerpop/gremlin/hadoop/structure/HadoopGraph.java | 10 -- 1 file changed, 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bd275a7f/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java -- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java index 5935ebf..14c5360 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java @@ -142,16 +142,6 @@ import java.util.stream.Stream; method = "g_V_matchXa_followedBy_count_isXgtX10XX_b__a_0followedBy_count_isXgtX10XX_bX_count", reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.", computers = {"ALL"}) -@Graph.OptOut( -test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.ReadTest$Traversals", -method = "*", -reason = "This body of tests is not configured to properly suit OLAP based testing and HadoopGraph is not designed to handle single-threaded OLTP reads/writes.", -computers = {"ALL"}) -@Graph.OptOut( -test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.WriteTest$Traversals", -method = "*", -reason = "This body of tests is not configured to properly suit OLAP based testing and HadoopGraph is not designed to handle single-threaded OLTP reads/writes.", -computers = {"ALL"}) public final class HadoopGraph implements Graph { public static final Logger LOGGER = LoggerFactory.getLogger(HadoopGraph.class);
[45/50] tinkerpop git commit: TINKERPOP-1967 Referenced TINKERPOP-1976 in OptOut for connectedComponent on RemoteGraph
TINKERPOP-1967 Referenced TINKERPOP-1976 in OptOut for connectedComponent on RemoteGraph Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f54d836d Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f54d836d Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f54d836d Branch: refs/heads/TINKERPOP-1967 Commit: f54d836db169cf1e7c0655abb711f9bf55c201dd Parents: d34106d Author: Stephen Mallette Authored: Mon Jul 30 11:22:25 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 13:07:31 2018 -0400 -- .../org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f54d836d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java index 5edd0d5..57600e1 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java @@ -59,7 +59,7 @@ import java.util.Iterator; @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.ConnectedComponentTest", method = "*", -reason = "h") +reason = "https://issues.apache.org/jira/browse/TINKERPOP-1976;) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest", method = "*",
[39/50] tinkerpop git commit: Merge branch 'TINKERPOP-1996'
Merge branch 'TINKERPOP-1996' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/edd82346 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/edd82346 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/edd82346 Branch: refs/heads/TINKERPOP-1967 Commit: edd8234684bedb7c073479724b2ee645a801cbc5 Parents: 7d21ee0 10478be Author: Stephen Mallette Authored: Tue Jul 31 07:35:52 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 07:35:52 2018 -0400 -- CHANGELOG.asciidoc | 4 + docs/src/recipes/centrality.asciidoc| 2 +- .../reference/implementations-neo4j.asciidoc| 5 +- .../implementations-tinkergraph.asciidoc| 8 +- docs/src/reference/the-graph.asciidoc | 370 --- docs/src/reference/the-traversal.asciidoc | 186 +- docs/src/upgrade/release-3.4.x.asciidoc | 49 ++- .../tinkerpop/gremlin/jsr223/CoreImports.java | 2 + .../step/map/TraversalVertexProgramStep.java| 4 - .../decoration/VertexProgramStrategy.java | 11 +- .../tinkerpop/gremlin/process/traversal/IO.java | 83 + .../traversal/dsl/graph/GraphTraversal.java | 37 ++ .../dsl/graph/GraphTraversalSource.java | 22 ++ .../process/traversal/step/ReadWriting.java | 48 +++ .../traversal/step/sideEffect/IoStep.java | 254 + .../process/traversal/step/util/Parameters.java | 4 +- .../ComputerVerificationStrategy.java | 3 +- .../StandardVerificationStrategy.java | 9 + .../tinkerpop/gremlin/structure/Graph.java | 30 ++ .../tinkerpop/gremlin/structure/io/IoCore.java | 3 + .../traversal/dsl/graph/GraphTraversalTest.java | 5 +- .../decoration/VertexProgramStrategyTest.java | 2 +- .../StandardVerificationStrategyTest.java | 13 +- .../glv/GraphTraversalSource.template | 4 +- gremlin-dotnet/glv/IO.template | 46 +++ gremlin-dotnet/glv/generate.groovy | 13 +- .../Process/Traversal/GraphTraversal.cs | 15 +- .../Process/Traversal/GraphTraversalSource.cs | 11 + .../src/Gremlin.Net/Process/Traversal/IO.cs | 56 +++ .../Gherkin/TraversalEvaluation/IOParameter.cs | 82 .../TraversalEvaluation/TraversalParser.cs | 7 + .../groovy/jsr223/GroovyTranslatorProvider.java | 6 + gremlin-javascript/glv/TraversalSource.template | 9 + gremlin-javascript/glv/generate.groovy | 4 + .../lib/process/graph-traversal.js | 30 ++ .../gremlin-javascript/lib/process/traversal.js | 29 ++ .../test/cucumber/feature-steps.js | 2 + gremlin-python/glv/TraversalSource.template | 11 + gremlin-python/glv/generate.groovy | 4 + .../gremlin_python/process/graph_traversal.py | 13 + .../jython/gremlin_python/process/traversal.py | 21 ++ .../src/main/jython/radish/feature_steps.py | 5 +- gremlin-test/features/sideEffect/Read.feature | 84 + gremlin-test/features/sideEffect/Write.feature | 60 +++ .../gremlin/AbstractGraphProvider.java | 22 +- .../apache/tinkerpop/gremlin/TestHelper.java| 24 +- .../gremlin/process/ProcessComputerSuite.java | 4 + .../gremlin/process/ProcessStandardSuite.java | 4 + .../process/traversal/step/map/ReadTest.java| 188 ++ .../process/traversal/step/map/WriteTest.java | 183 + .../ElementIdStrategyProcessTest.java | 1 - .../gremlin/structure/io/util/CustomId.java | 39 ++ .../gremlin/process/FeatureCoverageTest.java| 6 +- .../traversal/step/sideEffect/HadoopIoStep.java | 188 ++ .../traversal/strategy/HadoopIoStrategy.java| 83 + .../gremlin/hadoop/structure/HadoopGraph.java | 24 ++ .../step/sideEffect/TinkerGraphIoStepTest.java | 98 + .../structure/TinkerGraphPlayTest.java | 6 +- ...ctTinkerGraphGraphSONTranslatorProvider.java | 5 + .../gryo/TinkerGraphGryoTranslatorProvider.java | 7 +- 60 files changed, 2121 insertions(+), 427 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/edd82346/CHANGELOG.asciidoc -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/edd82346/docs/src/reference/the-traversal.asciidoc -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/edd82346/docs/src/upgrade/release-3.4.x.asciidoc -- diff --cc docs/src/upgrade/release-3.4.x.asciidoc index 2d699dc,8d87397..9951024 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@@ -31,12 -31,12 +31,12
[41/50] tinkerpop git commit: Merge branch 'tp32' into tp33
Merge branch 'tp32' into tp33 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c49c0ccb Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c49c0ccb Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c49c0ccb Branch: refs/heads/TINKERPOP-1967 Commit: c49c0ccb3bce76caabb4b0a9c7efe9df43801b39 Parents: ddc6694 e3018fb Author: Stephen Mallette Authored: Tue Jul 31 08:35:24 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 08:35:24 2018 -0400 -- docs/src/dev/developer/development-environment.asciidoc | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c49c0ccb/docs/src/dev/developer/development-environment.asciidoc --
[05/50] tinkerpop git commit: TINKERPOP-1996 Removed use of graph.io() in docs
TINKERPOP-1996 Removed use of graph.io() in docs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5bf19e2d Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5bf19e2d Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5bf19e2d Branch: refs/heads/TINKERPOP-1967 Commit: 5bf19e2d35aa2f050ecca0a7b2190553b0422720 Parents: 6d05805 Author: Stephen Mallette Authored: Mon Jul 16 09:29:01 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:10 2018 -0400 -- docs/src/recipes/centrality.asciidoc | 2 +- docs/src/reference/implementations-neo4j.asciidoc | 5 +++-- .../src/reference/implementations-tinkergraph.asciidoc | 8 docs/src/reference/the-traversal.asciidoc | 13 +++-- 4 files changed, 15 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5bf19e2d/docs/src/recipes/centrality.asciidoc -- diff --git a/docs/src/recipes/centrality.asciidoc b/docs/src/recipes/centrality.asciidoc index 8504589..0c1d4bc 100644 --- a/docs/src/recipes/centrality.asciidoc +++ b/docs/src/recipes/centrality.asciidoc @@ -156,7 +156,7 @@ give it the highest rank. Consider the following example using the Grateful Dead [gremlin-groovy] -graph.io(graphml()).readGraph('data/grateful-dead.xml') +g.io('data/grateful-dead.xml').read() g.V().repeat(groupCount('m').by('name').out()).times(5).cap('m'). <1> order(local).by(values, desc).limit(local, 10).next() <2> g.V().repeat(groupCount('m').by('name').out().timeLimit(100)).times(5).cap('m'). <3> http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5bf19e2d/docs/src/reference/implementations-neo4j.asciidoc -- diff --git a/docs/src/reference/implementations-neo4j.asciidoc b/docs/src/reference/implementations-neo4j.asciidoc index 7e05221..1760bd6 100644 --- a/docs/src/reference/implementations-neo4j.asciidoc +++ b/docs/src/reference/implementations-neo4j.asciidoc @@ -93,8 +93,8 @@ labels), a linear scan of the vertex-label partition is still faster than a line [gremlin-groovy] graph = Neo4jGraph.open('/tmp/neo4j') -graph.io(graphml()).readGraph('data/grateful-dead.xml') g = graph.traversal() +g.io('data/grateful-dead.xml').read() g.tx().commit() clock(1000) {g.V().hasLabel('artist').has('name','Garcia').iterate()} <1> graph.cypher("CREATE INDEX ON :artist(name)") <2> @@ -161,7 +161,8 @@ It is possible to leverage Cypher from within Gremlin by using the `Neo4jGraph.c [gremlin-groovy] graph = Neo4jGraph.open('/tmp/neo4j') -graph.io(gryo()).readGraph('data/tinkerpop-modern.kryo') +g = graph.traversal() +g.io('data/tinkerpop-modern.kryo').read() graph.cypher('MATCH (a {name:"marko"}) RETURN a') graph.cypher('MATCH (a {name:"marko"}) RETURN a').select('a').out('knows').values('name') graph.close() http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5bf19e2d/docs/src/reference/implementations-tinkergraph.asciidoc -- diff --git a/docs/src/reference/implementations-tinkergraph.asciidoc b/docs/src/reference/implementations-tinkergraph.asciidoc index 5b04126..acd37dd 100644 --- a/docs/src/reference/implementations-tinkergraph.asciidoc +++ b/docs/src/reference/implementations-tinkergraph.asciidoc @@ -90,12 +90,12 @@ TinkerGraph over the Grateful Dead graph. graph = TinkerGraph.open() g = graph.traversal() -graph.io(graphml()).readGraph('data/grateful-dead.xml') +g.io('data/grateful-dead.xml').read() clock(1000) {g.V().has('name','Garcia').iterate()} <1> graph = TinkerGraph.open() g = graph.traversal() graph.createIndex('name',Vertex.class) -graph.io(graphml()).readGraph('data/grateful-dead.xml') +g.io('data/grateful-dead.xml').read() clock(1000){g.V().has('name','Garcia').iterate()} <2> @@ -158,13 +158,13 @@ cardinality to `list` or else the data will import as `single`. Consider the fo [gremlin-groovy] graph = TinkerGraph.open() -graph.io(gryo()).readGraph("data/tinkerpop-crew.kryo") g = graph.traversal() +g.io("data/tinkerpop-crew.kryo").read() g.V().properties() conf = new BaseConfiguration() conf.setProperty("gremlin.tinkergraph.defaultVertexPropertyCardinality","list") graph = TinkerGraph.open(conf) -graph.io(gryo()).readGraph("data/tinkerpop-crew.kryo") g = graph.traversal() +g.io("data/tinkerpop-crew.kryo").read() g.V().properties() http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5bf19e2d/docs/src/reference/the-traversal.asciidoc -- diff --git
[27/50] tinkerpop git commit: TINKERPOP-1996 Prevent OLTP style execution in Hadoop of io()
TINKERPOP-1996 Prevent OLTP style execution in Hadoop of io() Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/fdb35c69 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/fdb35c69 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/fdb35c69 Branch: refs/heads/TINKERPOP-1967 Commit: fdb35c69422f95199563e938ec30a2408d419a58 Parents: e9ebacf Author: Stephen Mallette Authored: Fri Jul 20 16:13:47 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 16:13:47 2018 -0400 -- .../process/computer/traversal/strategy/HadoopIoStrategy.java | 6 ++ 1 file changed, 6 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fdb35c69/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java -- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java index af3db6e..3614745 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/traversal/strategy/HadoopIoStrategy.java @@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.step.ReadWriting; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep; import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException; import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper; import java.util.Arrays; @@ -54,6 +55,11 @@ public final class HadoopIoStrategy extends AbstractTraversalStrategy traversal) { +// since hadoopgraph can't be modified we can't try to use the existing IoStep for standard processing +// without graphcomputer +if (traversal.getStartStep() instanceof IoStep) +throw new VerificationException("HadoopGraph requires a GraphComputer for io() step", traversal); + // VertexProgramStrategy should wrap up the IoStep in a TraversalVertexProgramStep. use that to grab the // GraphComputer that was injected in there and push that in to the HadoopIoStep. this step pattern match // is fairly specific and since you really can't chain together steps after io() this approach should work
[47/50] tinkerpop git commit: TINKERPOP-1967 Added connectedComponent() step
TINKERPOP-1967 Added connectedComponent() step Deprecated the recipe for "Connected Components" but left the old content present as I felt it had educational value. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2e6b45a3 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2e6b45a3 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2e6b45a3 Branch: refs/heads/TINKERPOP-1967 Commit: 2e6b45a3d4ce9d7953ca7818950e702604b11976 Parents: a2db39c Author: Stephen Mallette Authored: Thu May 17 14:44:01 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 13:07:31 2018 -0400 -- CHANGELOG.asciidoc | 1 + docs/src/recipes/connected-components.asciidoc | 8 +- docs/src/reference/the-graphcomputer.asciidoc | 6 + docs/src/reference/the-traversal.asciidoc | 35 +++ docs/src/upgrade/release-3.4.x.asciidoc | 32 +++ .../tinkerpop/gremlin/jsr223/CoreImports.java | 4 + .../ConnectedComponentVertexProgram.java| 234 +++ .../traversal/step/map/ConnectedComponent.java | 38 +++ .../ConnectedComponentVertexProgramStep.java| 98 .../gremlin/process/remote/RemoteGraph.java | 4 + .../traversal/dsl/graph/GraphTraversal.java | 15 ++ .../traversal/dsl/graph/GraphTraversalTest.java | 2 +- .../Process/Traversal/GraphTraversal.cs | 9 + .../lib/process/graph-traversal.js | 10 + .../gremlin_python/process/graph_traversal.py | 4 + .../gremlin/process/ProcessComputerSuite.java | 2 + .../step/map/ConnectedComponentTest.java| 117 ++ .../computer/SparkHadoopGraphProvider.java | 2 + 18 files changed, 619 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2e6b45a3/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 430f52d..10255ba 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -35,6 +35,7 @@ This release also includes changes from <>. * Replaced `Parameterizing.addPropertyMutations()` with `Configuring.configure()`. * Changed interface hierarchy for `Parameterizing` and `Mutating` interfaces as they are tightly related. * Introduced the `with()` step modulator which can supply configuration options to `Configuring` steps. +* Added `connectedComponent()` step and related `VertexProgram`. * Added `supportsUpsert()` option to `VertexFeatures` and `EdgeFeatures`. * `min()` and `max()` now support all types implementing `Comparable`. * Change the `toString()` of `Path` to be standardized as other graph elements are. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2e6b45a3/docs/src/recipes/connected-components.asciidoc -- diff --git a/docs/src/recipes/connected-components.asciidoc b/docs/src/recipes/connected-components.asciidoc index 46d61eb..70abdbd 100644 --- a/docs/src/recipes/connected-components.asciidoc +++ b/docs/src/recipes/connected-components.asciidoc @@ -18,7 +18,13 @@ limitations under the License. == Connected Components Gremlin can be used to find link:https://en.wikipedia.org/wiki/Connected_component_(graph_theory)[connected components] -in a graph. Consider the following graph which has three connected components: +in a graph. As of TinkerPop 3.4.0, the process has been simplified to the `connectedComponent()`-step which is +described in more detail in the link: +link:http://tinkerpop.apache.org/docs/x.y.z/reference/#connectedcomponent-step[Reference Documentation]. + +The `connectedComponent()`-step replaces the original recipe described below from earlier versions of TinkerPop, +however the algorithm from that old recipe remains interesting for educational purposes and has thus not been removed. +The original recipe considers the following graph which has three connected components: image:connected-components.png[width=600] http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2e6b45a3/docs/src/reference/the-graphcomputer.asciidoc -- diff --git a/docs/src/reference/the-graphcomputer.asciidoc b/docs/src/reference/the-graphcomputer.asciidoc index 1d7586c..9cd1c76 100644 --- a/docs/src/reference/the-graphcomputer.asciidoc +++ b/docs/src/reference/the-graphcomputer.asciidoc @@ -403,6 +403,12 @@ g.V().peerPressure().by('cluster').valueMap() g.V().peerPressure().by(outE('knows')).by('cluster').valueMap() +[[connectedcomponentvertexprogram]] +=== ConnectedComponentVertexProgram + +The `ConnectedComponentVertexProgram` identifies
[19/50] tinkerpop git commit: TINKERPOP-1996 Fixed up general strategy application around io()
TINKERPOP-1996 Fixed up general strategy application around io() The GraphComputer was not being set properly in the HadoopIoStep and therefore executions of OLAP runs would not work even if withComputer(SparkGraphComputer) was set. It only worked if the gremlin.hadoop.defaultGraphComputer property was set which was weird. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c97d747f Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c97d747f Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c97d747f Branch: refs/heads/TINKERPOP-1967 Commit: c97d747f4b05cef42eb0e53adae50fcdee083a2e Parents: 4d979cf Author: Stephen Mallette Authored: Fri Jul 20 10:30:00 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 10:30:00 2018 -0400 -- .../step/map/TraversalVertexProgramStep.java| 4 --- .../decoration/VertexProgramStrategy.java | 30 +--- .../traversal/step/sideEffect/IoStep.java | 2 -- .../traversal/strategy/HadoopIoStrategy.java| 28 -- 4 files changed, 33 insertions(+), 31 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c97d747f/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 4eb950f..30cfee5 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 @@ -19,19 +19,15 @@ package org.apache.tinkerpop.gremlin.process.computer.traversal.step.map; -import org.apache.tinkerpop.gremlin.process.computer.GraphComputer; import org.apache.tinkerpop.gremlin.process.computer.GraphFilter; import org.apache.tinkerpop.gremlin.process.computer.Memory; import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects; import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram; -import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy; -import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.finalization.ComputerFinalizationStrategy; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent; import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; -import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies; import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c97d747f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java index cb99652..fa6e23f 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java @@ -101,23 +101,21 @@ public final class VertexProgramStrategy extends AbstractTraversalStrategy computerTraversal = new DefaultTraversal<>(); +final Step firstLegalOLAPStep = getFirstLegalOLAPStep(currentStep); +final Step lastLegalOLAPStep = getLastLegalOLAPStep(currentStep); +if (!(firstLegalOLAPStep instanceof EmptyStep)) { +final int index = TraversalHelper.stepIndex(firstLegalOLAPStep, traversal); +TraversalHelper.removeToTraversal(firstLegalOLAPStep, lastLegalOLAPStep.getNextStep(), (Traversal.Admin) computerTraversal); +final TraversalVertexProgramStep
[36/50] tinkerpop git commit: Added a better reason for some OptOut on RemoteGraph CTR
Added a better reason for some OptOut on RemoteGraph CTR Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/00a085aa Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/00a085aa Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/00a085aa Branch: refs/heads/TINKERPOP-1967 Commit: 00a085aa15cfc877222712f8572c89f1c096597c Parents: 2b045f3 Author: Stephen Mallette Authored: Mon Jul 30 11:40:52 2018 -0400 Committer: Stephen Mallette Committed: Mon Jul 30 11:40:52 2018 -0400 -- .../org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/00a085aa/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java index 8a1ab02..4b23475 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java @@ -55,11 +55,11 @@ import java.util.Iterator; @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.PeerPressureTest", method = "*", -reason = "h") +reason = "https://issues.apache.org/jira/browse/TINKERPOP-1976;) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest", method = "*", -reason = "h") +reason = "https://issues.apache.org/jira/browse/TINKERPOP-1976;) @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategyProcessTest", method = "*",
[16/50] tinkerpop git commit: TINKERPOP-1996 Fixed bad test assertions after last body of changes.
TINKERPOP-1996 Fixed bad test assertions after last body of changes. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/94233970 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/94233970 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/94233970 Branch: refs/heads/TINKERPOP-1967 Commit: 94233970f8dc7c5d7b8fdc4b9e7bdbf0ff905c25 Parents: ff71c6a Author: Stephen Mallette Authored: Fri Jul 20 06:31:42 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 06:31:42 2018 -0400 -- .../gremlin/process/traversal/step/map/WriteTest.java | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/94233970/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteTest.java index 55e6f9c..9798095 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/WriteTest.java @@ -65,7 +65,7 @@ public abstract class WriteTest extends AbstractGremlinProcessTest { final Traversal traversal = get_g_io_writeXkryoX(fileToWrite); printTraversalForm(traversal); -assertFalse(traversal.hasNext()); +traversal.iterate(); assertThat(f.length() > 0, is(true)); } @@ -81,7 +81,7 @@ public abstract class WriteTest extends AbstractGremlinProcessTest { final Traversal traversal = get_g_io_write_withXwriter_gryoX(fileToWrite); printTraversalForm(traversal); -assertFalse(traversal.hasNext()); +traversal.iterate(); assertThat(f.length() > 0, is(true)); } @@ -97,7 +97,7 @@ public abstract class WriteTest extends AbstractGremlinProcessTest { final Traversal traversal = get_g_io_writeXjsonX(fileToWrite); printTraversalForm(traversal); -assertFalse(traversal.hasNext()); +traversal.iterate(); assertThat(f.length() > 0, is(true)); } @@ -113,7 +113,7 @@ public abstract class WriteTest extends AbstractGremlinProcessTest { final Traversal traversal = get_g_io_write_withXwriter_graphsonX(fileToWrite); printTraversalForm(traversal); -assertFalse(traversal.hasNext()); +traversal.iterate(); assertThat(f.length() > 0, is(true)); } @@ -129,7 +129,7 @@ public abstract class WriteTest extends AbstractGremlinProcessTest { final Traversal traversal = get_g_io_writeXxmlX(fileToWrite); printTraversalForm(traversal); -assertFalse(traversal.hasNext()); +traversal.iterate(); assertThat(f.length() > 0, is(true)); }
[34/50] tinkerpop git commit: Merge branch 'tp32' into tp33
Merge branch 'tp32' into tp33 Conflicts: gremlin-server/src/main/bin/gremlin-server.sh Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/88b6e143 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/88b6e143 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/88b6e143 Branch: refs/heads/TINKERPOP-1967 Commit: 88b6e143dd81134074c17e5fa098f03972514273 Parents: 7985106 2b045f3 Author: Stephen Mallette Authored: Mon Jul 30 07:16:27 2018 -0400 Committer: Stephen Mallette Committed: Mon Jul 30 07:16:27 2018 -0400 -- gremlin-server/src/main/bin/gremlin-server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88b6e143/gremlin-server/src/main/bin/gremlin-server.sh -- diff --cc gremlin-server/src/main/bin/gremlin-server.sh index fec465c,06b065a..a09e10c --- a/gremlin-server/src/main/bin/gremlin-server.sh +++ b/gremlin-server/src/main/bin/gremlin-server.sh @@@ -90,191 -49,14 +90,191 @@@ els fi # Set Java options -if [ "$JAVA_OPTIONS" = "" ] ; then +if [[ "$JAVA_OPTIONS" = "" ]] ; then - JAVA_OPTIONS="-Xms32m -Xmx512m" + JAVA_OPTIONS="-Xms512m -Xmx4096m" fi -# Execute the application and return its exit code -if [ "$1" = "-i" ]; then - shift - exec $JAVA -Dlog4j.configuration=conf/log4j-server.properties $JAVA_OPTIONS -cp $CP:$CLASSPATH org.apache.tinkerpop.gremlin.server.util.GremlinServerInstall "$@" -else - exec $JAVA -Dlog4j.configuration=conf/log4j-server.properties $JAVA_OPTIONS -cp $CP:$CLASSPATH org.apache.tinkerpop.gremlin.server.GremlinServer "$@" -fi +# Build Java CLASSPATH +CP="$GREMLIN_HOME/conf/" +CP="$CP":$( echo $GREMLIN_HOME/lib/*.jar . | sed 's/ /:/g') +CP="$CP":$( find -L "$GREMLIN_HOME"/ext -mindepth 1 -maxdepth 1 -type d | \ +sort | sed 's/$/\/plugin\/*/' | tr '\n' ':' ) + +CLASSPATH="${CLASSPATH:-}:$CP" + +GREMLIN_SERVER_CMD=org.apache.tinkerpop.gremlin.server.GremlinServer +GREMLIN_INSTALL_CMD=org.apache.tinkerpop.gremlin.server.util.GremlinServerInstall + + +isRunning() { + if [[ -r "$PID_FILE" ]] ; then +PID=$(cat "$PID_FILE") +ps -p "$PID" &> /dev/null +return $? + else +return 1 + fi +} + +status() { + isRunning + RUNNING=$? +if [[ $RUNNING -gt 0 ]]; then + echo Server not running +else + echo Server running with PID $(cat "$PID_FILE") +fi +} + +stop() { + isRunning + RUNNING=$? + if [[ $RUNNING -gt 0 ]]; then +echo Server not running +rm -f "$PID_FILE" + else +kill "$PID" &> /dev/null || { echo "Unable to kill server [$PID]"; exit 1; } +for i in $(seq 1 60); do + ps -p "$PID" &> /dev/null || { echo "Server stopped [$PID]"; rm -f "$PID_FILE"; return 0; } + [[ $i -eq 30 ]] && kill "$PID" &> /dev/null + sleep 1 +done +echo "Unable to kill server [$PID]"; +exit 1; + fi +} + +start() { + isRunning + RUNNING=$? + if [[ $RUNNING -eq 0 ]]; then +echo Server already running with PID $(cat "$PID_FILE"). +exit 1 + fi + + if [[ -z "$RUNAS" ]]; then + +mkdir -p "$LOG_DIR" &>/dev/null +if [[ ! -d "$LOG_DIR" ]]; then + echo ERROR: LOG_DIR $LOG_DIR does not exist and could not be created. + exit 1 +fi + +mkdir -p "$PID_DIR" &>/dev/null +if [[ ! -d "$PID_DIR" ]]; then + echo ERROR: PID_DIR $PID_DIR does not exist and could not be created. + exit 1 +fi + +$JAVA -Dlog4j.configuration=$LOG4J_CONF $JAVA_OPTIONS -cp $CP:$CLASSPATH $GREMLIN_SERVER_CMD "$GREMLIN_YAML" >> "$LOG_FILE" 2>&1 & +PID=$! +disown $PID +echo $PID > "$PID_FILE" + else + +su -c "mkdir -p $LOG_DIR &>/dev/null" "$RUNAS" +if [[ ! -d "$LOG_DIR" ]]; then + echo ERROR: LOG_DIR $LOG_DIR does not exist and could not be created. + exit 1 +fi + +su -c "mkdir -p $PID_DIR &>/dev/null" "$RUNAS" +if [[ ! -d "$PID_DIR" ]]; then + echo ERROR: PID_DIR $PID_DIR does not exist and could not be created. + exit 1 +fi + +su -c "$JAVA -Dlog4j.configuration=$LOG4J_CONF $JAVA_OPTIONS -cp $CP:$CLASSPATH $GREMLIN_SERVER_CMD \"$GREMLIN_YAML\" >> \"$LOG_FILE\" 2>&1 & echo \$! " "$RUNAS" > "$PID_FILE" +chown "$RUNAS" "$PID_FILE" + fi + + isRunning + RUNNING=$? + if [[ $RUNNING -eq 0 ]]; then +echo Server started $(cat "$PID_FILE"). +exit 0 + else +echo Server failed +exit 1 + fi + +} + +startForeground() { + isRunning + RUNNING=$? + if [[ $RUNNING -eq 0 ]]; then +echo Server already running with PID $(cat "$PID_FILE"). +exit 1 + fi + + if [[ -z "$RUNAS" ]]; then +$JAVA
[32/50] tinkerpop git commit: Merge branch 'tp33'
Merge branch 'tp33' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/6358715e Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/6358715e Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/6358715e Branch: refs/heads/TINKERPOP-1967 Commit: 6358715e9dfa69627a425e4b930636f271141022 Parents: 9ab5efa 7985106 Author: Stephen Mallette Authored: Fri Jul 27 16:29:50 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 27 16:29:50 2018 -0400 -- docs/src/recipes/element-existence.asciidoc | 91 docs/src/recipes/index.asciidoc | 2 + 2 files changed, 93 insertions(+) --
[35/50] tinkerpop git commit: Merge branch 'tp33'
Merge branch 'tp33' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/4dccf144 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/4dccf144 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/4dccf144 Branch: refs/heads/TINKERPOP-1967 Commit: 4dccf144c71603612ce976827fd24c3eead4fb24 Parents: 6358715 88b6e14 Author: Stephen Mallette Authored: Mon Jul 30 07:16:33 2018 -0400 Committer: Stephen Mallette Committed: Mon Jul 30 07:16:33 2018 -0400 -- gremlin-server/src/main/bin/gremlin-server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --
[38/50] tinkerpop git commit: Merge branch 'tp33'
Merge branch 'tp33' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7d21ee0b Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7d21ee0b Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7d21ee0b Branch: refs/heads/TINKERPOP-1967 Commit: 7d21ee0b8b8770a68e6b5fb6f84500170f6c2a82 Parents: 4dccf14 ddc6694 Author: Stephen Mallette Authored: Mon Jul 30 11:41:28 2018 -0400 Committer: Stephen Mallette Committed: Mon Jul 30 11:41:28 2018 -0400 -- .../org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --
[09/50] tinkerpop git commit: TINKERPOP-1996 Got read/write() tests running for OLAP
TINKERPOP-1996 Got read/write() tests running for OLAP Introduced new Graph.Features to provider better separation between graph mutation features and graph loading features - they are two different things as demonstrated by io(). Fixed HadoopIoStep/Strategy so that they properly handle the different input/output format types expected. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f148e933 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f148e933 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f148e933 Branch: refs/heads/TINKERPOP-1967 Commit: f148e9331a945e0f4f707ea937b610e5902701c7 Parents: bd275a7 Author: Stephen Mallette Authored: Fri Jul 13 15:17:17 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:10 2018 -0400 -- .../tinkerpop/gremlin/structure/Graph.java | 27 + .../gremlin/AbstractGraphProvider.java | 18 -- .../gremlin/process/ProcessComputerSuite.java | 4 ++ .../process/traversal/step/map/ReadTest.java| 21 --- .../process/traversal/step/map/WriteTest.java | 14 - .../traversal/step/map/HadoopIoStep.java| 60 +++- .../traversal/strategy/HadoopIoStrategy.java| 2 +- .../gremlin/hadoop/structure/HadoopGraph.java | 16 ++ 8 files changed, 142 insertions(+), 20 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f148e933/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java index f1fc54a..f62b897 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java @@ -23,6 +23,8 @@ import org.apache.tinkerpop.gremlin.process.computer.GraphComputer; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; +import org.apache.tinkerpop.gremlin.structure.io.GraphReader; +import org.apache.tinkerpop.gremlin.structure.io.GraphWriter; import org.apache.tinkerpop.gremlin.structure.io.Io; import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; import org.apache.tinkerpop.gremlin.structure.util.FeatureDescriptor; @@ -439,6 +441,8 @@ public interface Graph extends AutoCloseable, Host { public static final String FEATURE_PERSISTENCE = "Persistence"; public static final String FEATURE_THREADED_TRANSACTIONS = "ThreadedTransactions"; public static final String FEATURE_CONCURRENT_ACCESS = "ConcurrentAccess"; +public static final String FEATURE_IO_READ = "IoRead"; +public static final String FEATURE_IO_WRITE = "IoWrite"; /** * Determines if the {@code Graph} implementation supports {@link GraphComputer} based processing. @@ -489,6 +493,29 @@ public interface Graph extends AutoCloseable, Host { } /** + * Determines if the {@code Graph} implementations supports read operations as executed with the + * {@link GraphTraversalSource#io(String)} step. Graph implementations will generally support this by + * default as any graph that can support direct mutation through the Structure API will by default + * accept data from the standard TinkerPop {@link GraphReader} implementations. However, some graphs like + * {@code HadoopGraph} don't accept direct mutations but can still do reads from that {@code io()} step. + */ +@FeatureDescriptor(name = FEATURE_IO_READ) +public default boolean supportsIoRead() { +return true; +} + +/** + * Determines if the {@code Graph} implementations supports write operations as executed with the + * {@link GraphTraversalSource#io(String)} step. Graph implementations will generally support this by + * default given the standard TinkerPop {@link GraphWriter} implementations. However, some graphs like + * {@code HadoopGraph} will use a different approach to handle writes. + */ +@FeatureDescriptor(name = FEATURE_IO_WRITE) +public default boolean supportsIoWrite() { +return true; +} + +/** * Gets the features related to "graph sideEffects" operation. */ public default
[14/50] tinkerpop git commit: TINKERPOP-1996 Added iterate() to read()/write() steps in docs
TINKERPOP-1996 Added iterate() to read()/write() steps in docs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ae3b1497 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ae3b1497 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ae3b1497 Branch: refs/heads/TINKERPOP-1967 Commit: ae3b149789b8a9779d0549cee8a6ca2e2febbd2b Parents: a580b6f Author: Stephen Mallette Authored: Thu Jul 19 14:24:15 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 14:24:15 2018 -0400 -- docs/src/recipes/centrality.asciidoc| 2 +- .../reference/implementations-neo4j.asciidoc| 4 +-- .../implementations-tinkergraph.asciidoc| 8 ++--- docs/src/reference/the-traversal.asciidoc | 35 +++- 4 files changed, 26 insertions(+), 23 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae3b1497/docs/src/recipes/centrality.asciidoc -- diff --git a/docs/src/recipes/centrality.asciidoc b/docs/src/recipes/centrality.asciidoc index 0c1d4bc..59e6a4d 100644 --- a/docs/src/recipes/centrality.asciidoc +++ b/docs/src/recipes/centrality.asciidoc @@ -156,7 +156,7 @@ give it the highest rank. Consider the following example using the Grateful Dead [gremlin-groovy] -g.io('data/grateful-dead.xml').read() +g.io('data/grateful-dead.xml').read().iterate() g.V().repeat(groupCount('m').by('name').out()).times(5).cap('m'). <1> order(local).by(values, desc).limit(local, 10).next() <2> g.V().repeat(groupCount('m').by('name').out().timeLimit(100)).times(5).cap('m'). <3> http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae3b1497/docs/src/reference/implementations-neo4j.asciidoc -- diff --git a/docs/src/reference/implementations-neo4j.asciidoc b/docs/src/reference/implementations-neo4j.asciidoc index 1760bd6..cfbf612 100644 --- a/docs/src/reference/implementations-neo4j.asciidoc +++ b/docs/src/reference/implementations-neo4j.asciidoc @@ -94,7 +94,7 @@ labels), a linear scan of the vertex-label partition is still faster than a line graph = Neo4jGraph.open('/tmp/neo4j') g = graph.traversal() -g.io('data/grateful-dead.xml').read() +g.io('data/grateful-dead.xml').read().iterate() g.tx().commit() clock(1000) {g.V().hasLabel('artist').has('name','Garcia').iterate()} <1> graph.cypher("CREATE INDEX ON :artist(name)") <2> @@ -162,7 +162,7 @@ It is possible to leverage Cypher from within Gremlin by using the `Neo4jGraph.c graph = Neo4jGraph.open('/tmp/neo4j') g = graph.traversal() -g.io('data/tinkerpop-modern.kryo').read() +g.io('data/tinkerpop-modern.kryo').read().iterate() graph.cypher('MATCH (a {name:"marko"}) RETURN a') graph.cypher('MATCH (a {name:"marko"}) RETURN a').select('a').out('knows').values('name') graph.close() http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae3b1497/docs/src/reference/implementations-tinkergraph.asciidoc -- diff --git a/docs/src/reference/implementations-tinkergraph.asciidoc b/docs/src/reference/implementations-tinkergraph.asciidoc index acd37dd..fe14d0f 100644 --- a/docs/src/reference/implementations-tinkergraph.asciidoc +++ b/docs/src/reference/implementations-tinkergraph.asciidoc @@ -90,12 +90,12 @@ TinkerGraph over the Grateful Dead graph. graph = TinkerGraph.open() g = graph.traversal() -g.io('data/grateful-dead.xml').read() +g.io('data/grateful-dead.xml').read().iterate() clock(1000) {g.V().has('name','Garcia').iterate()} <1> graph = TinkerGraph.open() g = graph.traversal() graph.createIndex('name',Vertex.class) -g.io('data/grateful-dead.xml').read() +g.io('data/grateful-dead.xml').read().iterate() clock(1000){g.V().has('name','Garcia').iterate()} <2> @@ -159,12 +159,12 @@ cardinality to `list` or else the data will import as `single`. Consider the fo graph = TinkerGraph.open() g = graph.traversal() -g.io("data/tinkerpop-crew.kryo").read() +g.io("data/tinkerpop-crew.kryo").read().iterate() g.V().properties() conf = new BaseConfiguration() conf.setProperty("gremlin.tinkergraph.defaultVertexPropertyCardinality","list") graph = TinkerGraph.open(conf) g = graph.traversal() -g.io("data/tinkerpop-crew.kryo").read() +g.io("data/tinkerpop-crew.kryo").read().iterate() g.V().properties() http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae3b1497/docs/src/reference/the-traversal.asciidoc -- diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc index cca71f6..cd2f5f2 100644 ---
[30/50] tinkerpop git commit: Added "get or create" or "upsert" recipe CTR
Added "get or create" or "upsert" recipe CTR Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3b8c8280 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3b8c8280 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3b8c8280 Branch: refs/heads/TINKERPOP-1967 Commit: 3b8c8280cab1e7a6fd3b273ef0d2cf2c6d00f650 Parents: dde73e4 Author: Stephen Mallette Authored: Fri Jul 27 16:29:11 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 27 16:29:11 2018 -0400 -- docs/src/recipes/element-existence.asciidoc | 91 docs/src/recipes/index.asciidoc | 2 + 2 files changed, 93 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3b8c8280/docs/src/recipes/element-existence.asciidoc -- diff --git a/docs/src/recipes/element-existence.asciidoc b/docs/src/recipes/element-existence.asciidoc new file mode 100644 index 000..be6e517 --- /dev/null +++ b/docs/src/recipes/element-existence.asciidoc @@ -0,0 +1,91 @@ + +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +[[element-existence]] +== Element Existence + +Checking for whether or not a graph element is present in the graph is simple: + +[gremlin-groovy,modern] + +g.V().has('person','name','marko').hasNext() +g.V().has('person','name','stephen').hasNext() + + +Knowing that an element exists or not is usually a common point of decision in determining the appropriate path of code +to take. In the example above, the check is for vertex existence and a typical reason to check for existence is to +determine whether or not to add a new vertex or to return the one that exists (i.e. "get or create" pattern). This +entire operation can occur in a single traversal. + +[gremlin-groovy,modern] + +g.V().has('person','name','marko'). + fold(). + coalesce(unfold(), + addV('person'). + property('name','marko'). + property('age',29)) +g.V().has('person','name','stephen'). + fold(). + coalesce(unfold(), + addV('person'). + property('name','stephen'). + property('age',34)) + + +This use of `coalesce()` shown above is the basis for this pattern. Note that at the end of `has()`-step there is +either a vertex or not. By using `fold()`, "existence" or "not existence" is reduced to a `List` with the vertex or +a `List` with no values. With a `List` as the traverser flowing into `coalesce()` the first child traversal to return +something will execute. If the `List` has a vertex then it will `unfold()` and return the existing one. If it is empty, +then the vertex does not exist and it is added and returned. + +This "get or create" logic can be expanded to be "upsert" like functionality as follows: + +[gremlin-groovy,modern] + +g.V().has('person','name','marko'). + fold(). + coalesce(unfold(), + addV('person').property('name','marko')). + property('age',29) +g.V().has('person','name','stephen'). + fold(). + coalesce(unfold(), + addV('person').property('name','stephen')). + property('age',34) + + +By moving the `property()`-step that set the "age" value outside of `coalesce()`, the property is then set for both +newly created vertices and for existing ones. + +WARNING: Always consider the specific nature of the graph implementation in use when considering these patterns. Some +graph databases may not treat these traversals as true "upsert" operations and may do a "read before write" in their +execution. + +It is possible to do similar sorts of operations with edges using the same pattern: + +[gremlin-groovy,modern] + +g.V().has('person','name','vadas').as('v'). + V().has('software','name','ripple'). + coalesce(__.inE('created').where(outV().as('v')), + addE('created').from('v').property('weight',0.5)) + + +In this case, the adjacent vertices of the edge are retrieved first and within the `coalesce()`, the existence of +the edge is checked with `where()` using a matching
[13/50] tinkerpop git commit: TINKERPOP-1996 Enabled feature coverage checks for GLV tests on read()/write()
TINKERPOP-1996 Enabled feature coverage checks for GLV tests on read()/write() Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a580b6fd Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a580b6fd Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a580b6fd Branch: refs/heads/TINKERPOP-1967 Commit: a580b6fda232ce6dd035e4c261a53d0f0dc69f83 Parents: 048ea21 Author: Stephen Mallette Authored: Thu Jul 19 14:08:25 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 14:08:25 2018 -0400 -- .../apache/tinkerpop/gremlin/process/FeatureCoverageTest.java | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a580b6fd/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java -- diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java index 503df77..5739629 100644 --- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java +++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java @@ -56,11 +56,13 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProjectTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesTest; +import org.apache.tinkerpop.gremlin.process.traversal.step.map.ReadTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.UnfoldTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.ValueMapTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexTest; +import org.apache.tinkerpop.gremlin.process.traversal.step.map.WriteTest; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateTest; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCountTest; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest; @@ -158,10 +160,12 @@ public class FeatureCoverageTest { GroupCountTest.class, GroupTest.class, InjectTest.class, +ReadTest.class, SackTest.class, SideEffectCapTest.class, //SideEffectTest.class, -StoreTest.class); +StoreTest.class, +WriteTest.class); // SubgraphTest.class, // TreeTest.class);
[06/50] tinkerpop git commit: TINKERPOP-1996 Moved IoStep implementations to sideEffect package
TINKERPOP-1996 Moved IoStep implementations to sideEffect package These steps really aren't quite sideEffects and not quite map steps either but they seem to fit better as sideEffect. meh Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/6d05805a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/6d05805a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/6d05805a Branch: refs/heads/TINKERPOP-1967 Commit: 6d05805ada657bcb3f50a60aa0c313c29d4611bb Parents: 62175c2 Author: Stephen Mallette Authored: Sat Jul 14 06:23:54 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:10 2018 -0400 -- .../dsl/graph/GraphTraversalSource.java | 2 +- .../process/traversal/step/map/IoStep.java | 241 --- .../traversal/step/sideEffect/IoStep.java | 241 +++ .../traversal/step/map/HadoopIoStep.java| 170 - .../traversal/step/sideEffect/HadoopIoStep.java | 163 + .../traversal/strategy/HadoopIoStrategy.java| 5 +- 6 files changed, 407 insertions(+), 415 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6d05805a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java index 7357418..df1b108 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java @@ -31,7 +31,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStartStep; import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep; import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep; -import org.apache.tinkerpop.gremlin.process.traversal.step.map.IoStep; +import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.RequirementsStrategy; import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6d05805a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/IoStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/IoStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/IoStep.java deleted file mode 100644 index 668b3dc..000 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/IoStep.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tinkerpop.gremlin.process.traversal.step.map; - -import org.apache.tinkerpop.gremlin.process.traversal.IO; -import org.apache.tinkerpop.gremlin.process.traversal.Traversal; -import org.apache.tinkerpop.gremlin.process.traversal.Traverser; -import org.apache.tinkerpop.gremlin.process.traversal.step.ReadWriting; -import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep; -import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters; -import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.EmptyTraverser; -import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException; -import org.apache.tinkerpop.gremlin.structure.Graph; -import
[07/50] tinkerpop git commit: TINKERPOP-1996 Added docs for io()
TINKERPOP-1996 Added docs for io() Killed all the old IO documentation that utilized the GraphReader/Writer classes directly as well as the Graph.io() method that is now deprecated. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/62175c22 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/62175c22 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/62175c22 Branch: refs/heads/TINKERPOP-1967 Commit: 62175c228b77bdbda96c11015f2974828df8f3aa Parents: 576649f Author: Stephen Mallette Authored: Fri Jul 13 17:31:46 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:10 2018 -0400 -- docs/src/reference/the-graph.asciidoc | 370 - docs/src/reference/the-traversal.asciidoc | 140 ++ 2 files changed, 140 insertions(+), 370 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/62175c22/docs/src/reference/the-graph.asciidoc -- diff --git a/docs/src/reference/the-graph.asciidoc b/docs/src/reference/the-graph.asciidoc index 1bcc96f..e9305b2 100644 --- a/docs/src/reference/the-graph.asciidoc +++ b/docs/src/reference/the-graph.asciidoc @@ -345,376 +345,6 @@ In the above case, the call to `graph.tx().createThreadedTx()` creates a new `Gr `ThreadLocal` transaction, thus allowing each thread to operate on it in the same context. In this case, there would be three separate vertices persisted to the `Graph`. -== Gremlin I/O - -image:gremlin-io.png[width=250,float=right] The task of getting data in and out of `Graph` instances is the job of -the Gremlin I/O packages. Gremlin I/O provides two interfaces for reading and writing `Graph` instances: `GraphReader` -and `GraphWriter`. These interfaces expose methods that support: - -* Reading and writing an entire `Graph` -* Reading and writing a `Traversal` as adjacency list format -* Reading and writing a single `Vertex` (with and without associated `Edge` objects) -* Reading and writing a single `Edge` -* Reading and writing a single `VertexProperty` -* Reading and writing a single `Property` -* Reading and writing an arbitrary `Object` - -In all cases, these methods operate in the currency of `InputStream` and `OutputStream` objects, allowing graphs and -their related elements to be written to and read from files, byte arrays, etc. The `Graph` interface offers the `io` -method, which provides access to "reader/writer builder" objects that are pre-configured with serializers provided by -the `Graph`, as well as helper methods for the various I/O capabilities. Unless there are very advanced requirements -for the serialization process, it is always best to utilize the methods on the `Io` interface to construct -`GraphReader` and `GraphWriter` instances, as the implementation may provide some custom settings that would otherwise -have to be configured manually by the user to do the serialization. - -It is up to the implementations of the `GraphReader` and `GraphWriter` interfaces to choose the methods they -implement and the manner in which they work together. The only characteristic enforced and expected is that the write -methods should produce output that is compatible with the corresponding read method. For example, the output of -`writeVertices` should be readable as input to `readVertices` and the output of `writeProperty` should be readable as -input to `readProperty`. - -NOTE: Additional documentation for TinkerPop IO formats can be found in the link:http://tinkerpop.apache.org/docs/x.y.z/dev/io/[IO Reference]. - -=== GraphML Reader/Writer - -image:gremlin-graphml.png[width=350,float=left] The link:http://graphml.graphdrawing.org/[GraphML] file format is a -common XML-based representation of a graph. It is widely supported by graph-related tools and libraries making it a -solid interchange format for TinkerPop. In other words, if the intent is to work with graph data in conjunction with -applications outside of TinkerPop, GraphML may be the best choice to do that. Common use cases might be: - -* Generate a graph using link:https://networkx.github.io/[NetworkX], export it with GraphML and import it to TinkerPop. -* Produce a subgraph and export it to GraphML to be consumed by and visualized in link:https://gephi.org/[Gephi]. -* Migrate the data of an entire graph to a different graph database not supported by TinkerPop. - -As GraphML is a specification for the serialization of an entire graph and not the individual elements of a graph, -methods that support input and output of single vertices, edges, etc. are not supported. - -WARNING: GraphML is a "lossy" format in that it only supports primitive values for properties and does not have -support for `Graph` variables.
[40/50] tinkerpop git commit: Added dev notes for python environment CTR
Added dev notes for python environment CTR Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e3018fb2 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e3018fb2 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e3018fb2 Branch: refs/heads/TINKERPOP-1967 Commit: e3018fb2e98df62a21272446f63cea5ee550408e Parents: 00a085a Author: Stephen Mallette Authored: Tue Jul 31 08:35:06 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 08:35:06 2018 -0400 -- docs/src/dev/developer/development-environment.asciidoc | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e3018fb2/docs/src/dev/developer/development-environment.asciidoc -- diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc index cde81c1..779f642 100644 --- a/docs/src/dev/developer/development-environment.asciidoc +++ b/docs/src/dev/developer/development-environment.asciidoc @@ -74,13 +74,14 @@ The site will be generated to the `target/site/home` directory. [[python-environment]] === Python Environment -As of TinkerPop 3.2.2, the build optionally requires link:https://www.python.org/[Python 2.x] to work with the -`gremlin-python` module. If Python is not installed, TinkerPop will still build with Maven, but native Python tests and +As of TinkerPop 3.2.2, the build optionally requires link:https://www.python.org/[Python] to build the `gremlin-python` +module. If Python is not installed, TinkerPop will still build with Maven, but native Python tests and Java tests that require Python code will be skipped. Developers should also install link:https://pypi.python.org/pypi/pip[pip] and link:https://virtualenv.pypa.io/en/stable/[virtualenv] (version 15.0.2 - older versions may cause build failures). -Once the Python environment is established, the full building and testing of `gremlin-python` may commence. It can be -done manually from the command line with: +The build expects two Python executables `python` and `python3` where `python` maps to 2.7.6 and `python3` is 3.4.3 or +higher. Once the Python environment is established, the full building and testing of `gremlin-python` may commence. It +can be done manually from the command line with: [source,text] mvn clean install -Pglv-python
[42/50] tinkerpop git commit: Merge branch 'tp33'
Merge branch 'tp33' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a2db39cc Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a2db39cc Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a2db39cc Branch: refs/heads/TINKERPOP-1967 Commit: a2db39cc710dd2809bab3fb6b2db44257458dcc8 Parents: edd8234 c49c0cc Author: Stephen Mallette Authored: Tue Jul 31 08:35:34 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 08:35:34 2018 -0400 -- docs/src/dev/developer/development-environment.asciidoc | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) --
[49/50] tinkerpop git commit: TINKERPOP-1967 Minor text cleanup for connectedComponent() docs
TINKERPOP-1967 Minor text cleanup for connectedComponent() docs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7fd7afd6 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7fd7afd6 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7fd7afd6 Branch: refs/heads/TINKERPOP-1967 Commit: 7fd7afd6da206d69cead5401a7e06484e84d3ff2 Parents: 3ef1661 Author: Stephen Mallette Authored: Fri Jun 15 08:24:22 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 13:07:31 2018 -0400 -- docs/src/recipes/connected-components.asciidoc | 16 +--- 1 file changed, 5 insertions(+), 11 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7fd7afd6/docs/src/recipes/connected-components.asciidoc -- diff --git a/docs/src/recipes/connected-components.asciidoc b/docs/src/recipes/connected-components.asciidoc index 850c31f..e6d0f7a 100644 --- a/docs/src/recipes/connected-components.asciidoc +++ b/docs/src/recipes/connected-components.asciidoc @@ -37,7 +37,6 @@ component membership is stored in the graph, rather than in memory. 3. Large graphs requiring an approach with `HadoopGraph` and `SparkGraphComputer` to yield results in a reasonable time. - These regimes are discussed separately using the following graph with three weakly connected components: image:connected-components.png[width=600] @@ -70,6 +69,7 @@ g.withComputer().V().connectedComponent(). A straightforward way to detect the various subgraphs with an OLTP traversal is to do this: + [gremlin-groovy,existing] g.V().emit(cyclicPath().or().not(both())). <1> @@ -95,8 +95,6 @@ weak component. <5> The values of the groupby map contain the lists of vertices making up the requested components. - - Small graph scalability The scalability of the OLTP traversal and the `connectedComponent()`-step for in-memory graphs is shown in the figures @@ -118,7 +116,6 @@ every cycle each vertex has to be checked for being pure depth-first-search or breadth-first-search implementations, connected-component algotithms should scale as [.big]##O##(V+E). For the traversals in the figure above this is almost the case. - [[cc-scale-ratio]] .Run times for finding connected components in a randomly generated graph with 10 components, each consisting of 6400 vertices image::cc-scale-ratio.png[width=600] @@ -130,7 +127,6 @@ characteristics show clearly from the graph. Indeed, for a given number of verti `connectedComponent()`-step does not depend on the number of edges, but rather on the maximum shortest path length in the graph. - Large graphs Large graphs in TinkerPop require distributed processing by `SparkGraphComputer` to get results in a reasonable time (OLAP @@ -142,10 +138,8 @@ either with the `gremlin.hadoop.defaultGraphComputer` property or as part of the Scalability of the the `connectedComponent()`-step with `SparkGraphComputer` is high, but note that: -* the graph should fit in the memory of the Spark cluster to allow the VertexProgram to run its cycles without spilling -intermediate results to disk and loosing most of the gains from the distributed processing - -* as discussed for small graphs, the BSP algorithm does not play well with graphs having a large shortest path between +* The graph should fit in the memory of the Spark cluster to allow the VertexProgram to run its cycles without spilling +intermediate results to disk and loosing most of the gains from the distributed processing. +* As discussed for small graphs, the BSP algorithm does not play well with graphs having a large shortest path between any pair of vertices. Overcoming this limitation is still a -link:http://www.vldb.org/pvldb/vol7/p1821-yan.pdf[subject of academic research]. - +link:http://www.vldb.org/pvldb/vol7/p1821-yan.pdf[subject of academic research]. \ No newline at end of file
[22/50] tinkerpop git commit: TINKERPOP-1996 Verification strategy to prevent io() from misuse
TINKERPOP-1996 Verification strategy to prevent io() from misuse Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e6e4413e Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e6e4413e Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e6e4413e Branch: refs/heads/TINKERPOP-1967 Commit: e6e4413e46594ae8f6d408de4e3d3bd85c228f53 Parents: ded7c18 Author: Stephen Mallette Authored: Fri Jul 20 11:47:24 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 11:47:24 2018 -0400 -- .../strategy/verification/StandardVerificationStrategy.java | 7 +++ .../verification/StandardVerificationStrategyTest.java| 5 + 2 files changed, 12 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e6e4413e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java index 50faa25..258d345 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java @@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.finaliza import org.apache.tinkerpop.gremlin.process.traversal.Step; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.step.ReadWriting; import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep; import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NoneStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep; @@ -39,6 +40,7 @@ import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) + * @author Stephen Mallette (http://stephen.genoprime.com) */ public final class StandardVerificationStrategy extends AbstractTraversalStrategy implements TraversalStrategy.VerificationStrategy { @@ -81,6 +83,11 @@ public final class StandardVerificationStrategy extends AbstractTraversalStrateg if (TraversalHelper.getStepsOfClass(ProfileSideEffectStep.class, traversal).size() > 1) { throw new VerificationException("The profile()-Step cannot be specified multiple times.", traversal); } + +if (traversal.getStartStep() instanceof ReadWriting && traversal.getSteps().size() != 1) { +if (TraversalHelper.getStepsOfClass(NoneStep.class, traversal).size() != traversal.getSteps().size() - 1) +throw new VerificationException("The io() step must be the first and only step in the traversal - it cannot be used with other steps", traversal); +} } public static StandardVerificationStrategy instance() { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e6e4413e/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java -- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java index ee96266..deec002 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java @@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.RequirementsStrategy; import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies; +import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -50,7 +51,11 @@ public class StandardVerificationStrategyTest {
[26/50] tinkerpop git commit: TINKERPOP-1996 Added IoStep to list of unsupported steps
TINKERPOP-1996 Added IoStep to list of unsupported steps If this isn't there then GraphReader/Writer will blow up as it tries to mutate the graph. IoStep is an OLTP only step. For OLAP each graph implementation will need to add its own GraphComputer-ready step. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e9ebacfc Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e9ebacfc Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e9ebacfc Branch: refs/heads/TINKERPOP-1967 Commit: e9ebacfc84aca0e0ac30720bba68939f77c4c5d0 Parents: 23c71b6 Author: Stephen Mallette Authored: Fri Jul 20 15:08:45 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 15:08:45 2018 -0400 -- .../strategy/verification/ComputerVerificationStrategy.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e9ebacfc/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java index 2d076b6..5c2d299 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java @@ -28,6 +28,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating; import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor; import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep; +import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep; @@ -46,7 +47,7 @@ public final class ComputerVerificationStrategy extends AbstractTraversalStrateg private static final ComputerVerificationStrategy INSTANCE = new ComputerVerificationStrategy(); private static final Set> UNSUPPORTED_STEPS = new HashSet<>(Arrays.asList( -InjectStep.class, Mutating.class, SubgraphStep.class, ComputerResultStep.class +InjectStep.class, Mutating.class, SubgraphStep.class, ComputerResultStep.class, IoStep.class )); private ComputerVerificationStrategy() {
[10/50] tinkerpop git commit: TINKERPOP-1996 Added support/testing for io() in GLVs
TINKERPOP-1996 Added support/testing for io() in GLVs Had to revert to using iterate() and stop read/write() from terminating the traversal. Kinda stinks, but we rely on iterate() quite heavily and for remoting allowing read()/write() to terminate means that the traversal will execute during traversal construction in the translator (which is early and potentially bad). Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/048ea21c Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/048ea21c Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/048ea21c Branch: refs/heads/TINKERPOP-1967 Commit: 048ea21c0adf9297233d06222e75c64dbe1fa1ca Parents: f8e3b8a Author: Stephen Mallette Authored: Thu Jul 19 13:30:02 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:41:01 2018 -0400 -- .../traversal/dsl/graph/GraphTraversal.java | 11 +-- gremlin-dotnet/glv/IO.template | 46 +++ gremlin-dotnet/glv/generate.groovy | 8 ++ .../src/Gremlin.Net/Process/Traversal/IO.cs | 54 + .../Gherkin/TraversalEvaluation/IOParameter.cs | 82 +++ .../TraversalEvaluation/TraversalParser.cs | 7 ++ gremlin-javascript/glv/TraversalSource.template | 9 +++ gremlin-javascript/glv/generate.groovy | 4 + .../gremlin-javascript/lib/process/traversal.js | 25 ++ .../test/cucumber/feature-steps.js | 2 + gremlin-python/glv/TraversalSource.template | 11 +++ gremlin-python/glv/generate.groovy | 4 + .../jython/gremlin_python/process/traversal.py | 19 + .../src/main/jython/radish/feature_steps.py | 5 +- gremlin-test/features/sideEffect/Read.feature | 84 gremlin-test/features/sideEffect/Write.feature | 60 ++ .../gremlin/AbstractGraphProvider.java | 2 +- .../process/traversal/step/map/ReadTest.java| 57 ++--- 18 files changed, 471 insertions(+), 19 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/048ea21c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java index 20f8996..a675ad1 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java @@ -124,6 +124,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCount import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupSideEffectStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep; +import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IoStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.LambdaSideEffectStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep; import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackValueStep; @@ -2734,13 +2735,13 @@ public interface GraphTraversal extends Traversal { -/ IO TERMINATOR STEPS / +/ IO STEPS / /** * This step is technically a step modulator for the the {@link GraphTraversalSource#io(String)} step which * instructs the step to perform a read with its given configuration. * - * @return the traversal that has been iterated with the read IO action executed + * @return the traversal with the {@link IoStep} modulated to read * @see http://tinkerpop.apache.org/docs/${project.version}/reference/#io-step; target="_blank">Reference Documentation - IO Step * @see http://tinkerpop.apache.org/docs/${project.version}/reference/#read-step; target="_blank">Reference Documentation - Read Step * @since 3.4.0 @@ -2748,14 +2749,14 @@ public interface GraphTraversal extends Traversal { public default GraphTraversal read() { this.asAdmin().getBytecode().addStep(Symbols.read); ((ReadWriting) this.asAdmin().getEndStep()).setMode(ReadWriting.Mode.READING); -return this.iterate(); +return this; } /** * This step is technically a step modulator for the the {@link GraphTraversalSource#io(String)} step which * instructs the
[48/50] tinkerpop git commit: TINKERPOP-1967 Added a test for regressions on halted traversers
TINKERPOP-1967 Added a test for regressions on halted traversers Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/47ab1c2b Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/47ab1c2b Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/47ab1c2b Branch: refs/heads/TINKERPOP-1967 Commit: 47ab1c2b30fc4aa28f0cb7f58c57e68e5989263c Parents: f54d836 Author: Stephen Mallette Authored: Mon Jul 30 14:13:33 2018 -0400 Committer: Stephen Mallette Committed: Tue Jul 31 13:07:31 2018 -0400 -- .../step/map/ConnectedComponentTest.java| 21 1 file changed, 21 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/47ab1c2b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ConnectedComponentTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ConnectedComponentTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ConnectedComponentTest.java index 8b1904f..3133382 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ConnectedComponentTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ConnectedComponentTest.java @@ -39,6 +39,8 @@ public abstract class ConnectedComponentTest extends AbstractGremlinProcessTest public abstract Traversal get_g_V_hasLabelXsoftwareX_connectedComponent(); +public abstract Traversal get_g_V_dedup_connectedComponent(); + public abstract Traversal get_g_V_connectedComponent_withXedges_bothEXknowsXX_withXpropertyName_clusterX(); @Test @@ -57,6 +59,20 @@ public abstract class ConnectedComponentTest extends AbstractGremlinProcessTest @Test @LoadGraphWith(MODERN) +public void g_V_dedup_connectedComponent() { +final Traversal traversal = get_g_V_dedup_connectedComponent(); +printTraversalForm(traversal); +int counter = 0; +while (traversal.hasNext()) { +final Vertex vertex = traversal.next(); +counter++; +assertEquals("1", vertex.value(ConnectedComponentVertexProgram.COMPONENT)); +} +assertEquals(6, counter); +} + +@Test +@LoadGraphWith(MODERN) public void g_V_hasLabelXsoftwareX_connectedComponent() { final Traversal traversal = get_g_V_hasLabelXsoftwareX_connectedComponent(); printTraversalForm(traversal); @@ -106,6 +122,11 @@ public abstract class ConnectedComponentTest extends AbstractGremlinProcessTest } @Override +public Traversal get_g_V_dedup_connectedComponent() { +return g.V().dedup().connectedComponent(); +} + +@Override public Traversal get_g_V_hasLabelXsoftwareX_connectedComponent() { return g.V().hasLabel("software").connectedComponent(); }
[21/50] tinkerpop git commit: TINKERPOP-1996 Added upgrade docs
TINKERPOP-1996 Added upgrade docs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ded7c187 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ded7c187 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ded7c187 Branch: refs/heads/TINKERPOP-1967 Commit: ded7c187480a68b6f7be2d0cb777461f57a2871c Parents: 8fd3bf2 Author: Stephen Mallette Authored: Fri Jul 20 11:20:03 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 11:20:03 2018 -0400 -- docs/src/upgrade/release-3.4.x.asciidoc | 49 ++-- 1 file changed, 47 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ded7c187/docs/src/upgrade/release-3.4.x.asciidoc -- diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc index 97e14e3..0bb3903 100644 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@ -36,7 +36,7 @@ modulator. This modulator allows the step it is modifying to accept configuratio behavior of the step itself. A good example of its usage is shown with the revised syntax of the `pageRank()` step which now uses `with()` to replace the old `by()` options: -[groovy] +[source,groovy] g.V().hasLabel('person'). pageRank(). @@ -49,7 +49,7 @@ g.V().hasLabel('person'). A similar change was made for `peerPressure()` step: -[groovy] +[source,groovy] g.V().hasLabel('person'). peerPressure(). @@ -65,6 +65,33 @@ release where breaking changes are allowed. See: link:https://issues.apache.org/jira/browse/TINKERPOP-1975[TINKERPOP-1975], link:http://tinkerpop.apache.org/docs/3.4.0/reference/#with-step[Reference Documentation] + io() Step + +There have been some important changes to IO operations for reading and writing graph data. The use of `Graph.io()` +has been deprecated to further remove dependence on the Graph (Structure) API for users and to extend these basic +operations to GLV users by making these features available as part of the Gremlin language. + +It is now possible to simply use Gremlin: + +[source,groovy] + +graph = ... +g = graph.traversal() +g.io(someInputFile).read().iterate() +g.io(someOutputFile).write().iterate() + + +While `io()` step is still single-threaded for OLTP style loading, it can be utilized in conjunction with OLAP which +internally uses `CloneVertexProgram` and therefore any graph `InputFormat` or `OutputFormat` can be configured in +conjunction with this step for parallel loads of large datasets. + +It is also worth noting that the `io()`-step may be overriden by graph providers to utilize their native bulk-loading +features, so consult the documentation of the implementation being used to determine if there are any improved +efficiencies there. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1996[TINKERPOP-1996], +link:http://tinkerpop.apache.org/docs/3.4.0/reference/#io-step[Reference Documentation] + Removal of Giraph Support Support for Giraph has been removed as of this version. There were a number of reasons for this decision which were @@ -284,6 +311,24 @@ See: link:https://issues.apache.org/jira/browse/TINKERPOP-1522[TINKERPOP-1522] Graph Database Providers += io() Step + +The new `io()`-step that was introduced provides some new changes to consider. Note that `Graph.io()` has been +deprecated and users are no longer instructed to utilize that method. It is not yet decided when that method will be +removed completely, but given the public nature of it and the high chance of common usage, it should be hanging around +for some time. + +As with any step in Gremlin, it is possible to replace it with a more provider specific implementation that could be +more efficient. Developing a `TraversalStrategy` to do this is encouraged, especially for those graph providers who +might have special bulk loaders that could be abstracted by this step. Examples of this are already shown with +`HadoopGraph` which replaces the simple single-threaded loader with `CloneVertexProgram`. Graph providers are +encouraged to use the `with()` step to capture any necessary configurations required for their underlying loader to +work. Graph providers should not feel restricted to `graphson`, `gryo` and `graphml` formats either. If a graph +supports CSV or some custom graph specific format, it shouldn't be difficult to gather the configurations necessary to +make that available to users. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1996[TINKERPOP-1996] + = Caching Graph Features For graph implementations that have expensive creation times, it can be time consuming to run the
[28/50] tinkerpop git commit: TINKERPOP-1996 Fixed up typos in docs
TINKERPOP-1996 Fixed up typos in docs Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/38dc70df Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/38dc70df Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/38dc70df Branch: refs/heads/TINKERPOP-1967 Commit: 38dc70df6db105595784a93ecf5f5726201a962d Parents: fdb35c6 Author: Stephen Mallette Authored: Fri Jul 27 07:07:17 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 27 07:07:17 2018 -0400 -- docs/src/reference/the-traversal.asciidoc | 8 1 file changed, 4 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/38dc70df/docs/src/reference/the-traversal.asciidoc -- diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc index c3b9300..c861d87 100644 --- a/docs/src/reference/the-traversal.asciidoc +++ b/docs/src/reference/the-traversal.asciidoc @@ -1086,9 +1086,9 @@ g.io(someOutputFile). write().iterate() -The `IO` class is a helper for the `io()` step that provides expressions that can be used to help configure it +The `IO` class is a helper for the `io()`-step that provides expressions that can be used to help configure it and in this case it allows direct specification of the "reader" or "writer" to use. The "reader" actually refers to -a `GraphReader` implementation and the `writer" refers to a `GraphWriter` implementation. The implementations of +a `GraphReader` implementation and the "writer" refers to a `GraphWriter` implementation. The implementations of those interfaces provided by default are the standard TinkerPop implementations. That default is an important point to consider for users. The default TinkerPop implementations are not designed with @@ -1100,7 +1100,7 @@ writing perspective is not that different in there are no parallel operations in to disk requires a single pass of the data without high memory requirements for larger datasets. In general, TinkerPop recommends that users examine the native bulk import/export tools of the graph implementation -that they choose. Those tools will often outperform the `io()` step and perhaps be easier to use with a greater +that they choose. Those tools will often outperform the `io()`-step and perhaps be easier to use with a greater feature set. That said, graph providers do have the option to optimize `io()` to back it with their own import/export utilities and therefore the default behavior provided by TinkerPop described above might be overridden by the graph. @@ -,7 +,7 @@ functionality internally using <>. With t can be imported/exported assuming that there is a Hadoop `InputFormat` or `OutputFormat` to support it. IMPORTANT: Remote Gremlin Console users or Gremlin Language Variant (GLV) users (e.g. gremlin-python) who utilize -the `io()` step should recall that their `read()` or `write()` operation will occur on the server and not locally +the `io()`-step should recall that their `read()` or `write()` operation will occur on the server and not locally and therefore the file specified for import/export must be something accessible by the server. GraphSON and Gryo formats are extensible allowing users and graph providers to extend supported serialization options.
[23/50] tinkerpop git commit: TINKERPOP-1996 No need to assert io() against VertexProgramStrategy
TINKERPOP-1996 No need to assert io() against VertexProgramStrategy Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7f1bf178 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7f1bf178 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7f1bf178 Branch: refs/heads/TINKERPOP-1967 Commit: 7f1bf1783efb8a7eca17d0367af66c6289455fd8 Parents: e6e4413 Author: Stephen Mallette Authored: Fri Jul 20 11:52:13 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 11:52:13 2018 -0400 -- .../strategy/decoration/VertexProgramStrategyTest.java | 6 -- 1 file changed, 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7f1bf178/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java -- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java index d3bb6ef..8ceef48 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java @@ -43,7 +43,6 @@ import static org.junit.Assert.assertEquals; /** * @author Marko A. Rodriguez (http://markorodriguez.com) - * @author Stephen Mallette (http://stephen.genoprime.com) */ @RunWith(Parameterized.class) public class VertexProgramStrategyTest { @@ -68,12 +67,7 @@ public class VertexProgramStrategyTest { public static Iterable generateTestParameters() { final ComputerResultStep computerResultStep = new ComputerResultStep(EmptyTraversal.instance()); - -// The tests for io() need to verify that there is no change i.e. we don't want the step getting wrapped up in -// traversalvertexprogramstep stuff or else it won't execute properly in OLAP return Arrays.asList(new Traversal[][]{ -{ EmptyGraph.instance().traversal().io("blah.json"), EmptyGraph.instance().traversal().io("blah.json")}, -{ EmptyGraph.instance().traversal().io("blah.json"), EmptyGraph.instance().traversal().io("blah.json")}, {__.V().out().count(), start().addStep(traversal(__.V().out().count())).addStep(computerResultStep)}, {__.V().pageRank().out().count(), start().pageRank().asAdmin().addStep(traversal(__.V().out().count())).addStep(computerResultStep)}, {__.V().out().pageRank(), start().addStep(traversal(__.V().out())).pageRank().asAdmin().addStep(traversal(__.identity())).addStep(computerResultStep)},
[37/50] tinkerpop git commit: Merge branch 'tp32' into tp33
Merge branch 'tp32' into tp33 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ddc66941 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ddc66941 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ddc66941 Branch: refs/heads/TINKERPOP-1967 Commit: ddc66941ed6340edd9009f0aa277aa8326255c68 Parents: 88b6e14 00a085a Author: Stephen Mallette Authored: Mon Jul 30 11:41:21 2018 -0400 Committer: Stephen Mallette Committed: Mon Jul 30 11:41:21 2018 -0400 -- .../org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ddc66941/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java --
[25/50] tinkerpop git commit: TINKERPOP-1996 Fixed verification on io()
TINKERPOP-1996 Fixed verification on io() Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/23c71b60 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/23c71b60 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/23c71b60 Branch: refs/heads/TINKERPOP-1967 Commit: 23c71b60cc34c14e9defc6a9a7ab6c57c090460b Parents: ae3f685 Author: Stephen Mallette Authored: Fri Jul 20 13:22:47 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 13:22:47 2018 -0400 -- .../verification/StandardVerificationStrategy.java | 6 -- .../StandardVerificationStrategyTest.java | 16 +++- 2 files changed, 15 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/23c71b60/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java index 258d345..7d88ed9 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java @@ -84,8 +84,10 @@ public final class StandardVerificationStrategy extends AbstractTraversalStrateg throw new VerificationException("The profile()-Step cannot be specified multiple times.", traversal); } -if (traversal.getStartStep() instanceof ReadWriting && traversal.getSteps().size() != 1) { -if (TraversalHelper.getStepsOfClass(NoneStep.class, traversal).size() != traversal.getSteps().size() - 1) +if (traversal.getStartStep() instanceof ReadWriting && !endStep.equals(traversal.getStartStep())) { +final int total = TraversalHelper.getStepsOfClass(NoneStep.class, traversal).size() + +TraversalHelper.getStepsOfClass(RequirementsStep.class, traversal).size() + 1; +if (total != traversal.getSteps().size()) throw new VerificationException("The io() step must be the first and only step in the traversal - it cannot be used with other steps", traversal); } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/23c71b60/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java -- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java index deec002..96a68b2 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java @@ -18,6 +18,7 @@ */ package org.apache.tinkerpop.gremlin.process.traversal.strategy.verification; +import org.apache.tinkerpop.gremlin.TestHelper; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; @@ -29,6 +30,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; +import java.io.File; import java.util.Arrays; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out; @@ -44,18 +46,22 @@ import static org.junit.Assert.fail; @RunWith(Parameterized.class) public class StandardVerificationStrategyTest { + @Parameterized.Parameters(name = "{0}") -public static Iterable data() { +public static Iterable data() throws Exception { + +final String file = TestHelper.generateTempFile(StandardVerificationStrategyTest.class, "shouldBeVerified", ".kryo").getAbsolutePath(); + return Arrays.asList(new Object[][]{ // traversals that should fail verification {"__.repeat(out().fold().unfold()).times(2)", repeat(out().fold().unfold()).times(2), false}, {"__.repeat(sum()).times(2)", repeat(sum()).times(2), false}, {"__.repeat(out().count())",
[01/50] tinkerpop git commit: TINKERPOP-1996 Added IO to imports and javadoc fixes [Forced Update!]
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1967 b9f112bb7 -> 47ab1c2b3 (forced update) TINKERPOP-1996 Added IO to imports and javadoc fixes Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/328737a3 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/328737a3 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/328737a3 Branch: refs/heads/TINKERPOP-1967 Commit: 328737a371f8a2040d02f9c2dbb06d049ce3c881 Parents: be9db8d Author: Stephen Mallette Authored: Thu Jul 12 11:19:10 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:39:30 2018 -0400 -- .../tinkerpop/gremlin/jsr223/CoreImports.java | 2 ++ .../tinkerpop/gremlin/process/traversal/IO.java | 34 2 files changed, 30 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/328737a3/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java index 9d7eb52..72ad47a 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java @@ -56,6 +56,7 @@ import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimiza import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection; import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph; import org.apache.tinkerpop.gremlin.process.traversal.Bindings; +import org.apache.tinkerpop.gremlin.process.traversal.IO; import org.apache.tinkerpop.gremlin.process.traversal.Operator; import org.apache.tinkerpop.gremlin.process.traversal.Order; import org.apache.tinkerpop.gremlin.process.traversal.P; @@ -184,6 +185,7 @@ public final class CoreImports { CLASS_IMPORTS.add(GraphReader.class); CLASS_IMPORTS.add(GraphWriter.class); CLASS_IMPORTS.add(Io.class); +CLASS_IMPORTS.add(IO.class); CLASS_IMPORTS.add(IoCore.class); CLASS_IMPORTS.add(Storage.class); CLASS_IMPORTS.add(GraphMLIo.class); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/328737a3/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java index f76c2bc..6668cf1 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java @@ -23,6 +23,12 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.GraphReader; import org.apache.tinkerpop.gremlin.structure.io.GraphWriter; +import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLReader; +import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLWriter; +import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader; +import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter; +import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader; +import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter; /** * Fields that can be provided to the {@link GraphTraversalSource#io(String)} using the @@ -34,21 +40,37 @@ public class IO { private IO() {} +/** + * A value to supply to {@link IO#reader} or {@link IO#writer} to indicate the format to use. Using this shorthand + * will configure a default {@link GraphSONReader} or {@link GraphSONWriter} respectively, + */ public static final String graphson = "graphson"; + +/** + * A value to supply to {@link IO#reader} or {@link IO#writer} to indicate the format to use. Using this shorthand + * will configure a default {@link GryoReader} or {@link GryoWriter} respectively, + */ public static final String gryo = "gryo"; + +/** + * A value to supply to {@link IO#reader} or {@link IO#writer} to indicate the format to use. Using this shorthand + * will configure a default {@link GraphMLReader} or {@link GraphMLWriter} respectively, + */ public static final String graphml = "graphml"; /** - * The specific {@link GraphReader} instance to use or the name of the fully qualified classname of such an - * instance. If this value is not
[08/50] tinkerpop git commit: TINKERPOP-1996 Updated changelog
TINKERPOP-1996 Updated changelog Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/576649fd Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/576649fd Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/576649fd Branch: refs/heads/TINKERPOP-1967 Commit: 576649fd5456f6390bf9481d01438a7e78db083e Parents: f148e93 Author: Stephen Mallette Authored: Fri Jul 13 15:22:43 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 13:40:10 2018 -0400 -- CHANGELOG.asciidoc | 1 + 1 file changed, 1 insertion(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/576649fd/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index bc78bbe..1add03c 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -28,6 +28,7 @@ This release also includes changes from <>. * Bumped to Netty 4.1.25. * Bumped to Spark 2.3.1. * Added the `io()` start step and `read()` and `write()` termination steps to the Gremlin language. +* Added `GraphFeatures.supportsIoRead()` and `GraphFeatures.supportsIoWrite()`. * Deprecated `Graph.io()` and related infrastructure. * Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type. * Replaced `Parameterizing.addPropertyMutations()` with `Configuring.configure()`.
[15/50] tinkerpop git commit: TINKERPOP-1996 Added support for setting IoRegistries using with()
TINKERPOP-1996 Added support for setting IoRegistries using with() IORegistry instances are important because they feed serializer information to the Reader/Writer instances. Of all the configuration options that one seemed like the most important to make possible using with(). Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ff71c6ab Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ff71c6ab Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ff71c6ab Branch: refs/heads/TINKERPOP-1967 Commit: ff71c6abee0b39d7ee95128c3d64906daad96a76 Parents: ae3b149 Author: Stephen Mallette Authored: Thu Jul 19 16:13:57 2018 -0400 Committer: Stephen Mallette Committed: Thu Jul 19 16:13:57 2018 -0400 -- .../tinkerpop/gremlin/process/traversal/IO.java | 7 ++ .../traversal/step/sideEffect/IoStep.java | 75 .../process/traversal/step/util/Parameters.java | 4 +- .../Process/Traversal/GraphTraversal.cs | 21 ++ .../src/Gremlin.Net/Process/Traversal/IO.cs | 2 + .../gremlin-javascript/lib/process/traversal.js | 4 ++ .../jython/gremlin_python/process/traversal.py | 2 + .../gremlin/structure/io/util/CustomId.java | 39 ++ .../step/sideEffect/TinkerGraphIoStepTest.java | 75 9 files changed, 181 insertions(+), 48 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff71c6ab/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java index 6668cf1..67b4670 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/IO.java @@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.GraphReader; import org.apache.tinkerpop.gremlin.structure.io.GraphWriter; +import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLReader; import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLWriter; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader; @@ -73,4 +74,10 @@ public class IO { * the file extension provided to it. */ public static final String writer = Graph.Hidden.hide("tinkerpop.io.writer"); + +/** + * A key that identifies the fully qualified class names of {@link IoRegistry} instances to use. May be specified + * multiple times (i.e. once for each registry) using the {@link GraphTraversal#with(String, Object)} modulator. + */ +public static final String registry = Graph.Hidden.hide("tinkerpop.io.registry"); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff71c6ab/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java index 9804333..1d4f40b 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IoStep.java @@ -31,10 +31,13 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementExce import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.GraphReader; import org.apache.tinkerpop.gremlin.structure.io.GraphWriter; +import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLReader; import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLWriter; +import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader; import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter; +import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper; import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader; import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; @@ -46,6 +49,9 @@ import java.io.IOException; import
[20/50] tinkerpop git commit: TINKERPOP-1996 Undeprecated some Io related classes
TINKERPOP-1996 Undeprecated some Io related classes These classes still have use as part of IoRegistry which is still in use and I don't see a clear way to get rid of that easily. We'd have to change the whole system for serialization configuration to accomplish that so I guess this stuff stays for now. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/8fd3bf21 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/8fd3bf21 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/8fd3bf21 Branch: refs/heads/TINKERPOP-1967 Commit: 8fd3bf21efac092f619254245ba83614327c4dcb Parents: c97d747 Author: Stephen Mallette Authored: Fri Jul 20 10:47:20 2018 -0400 Committer: Stephen Mallette Committed: Fri Jul 20 10:47:20 2018 -0400 -- .../main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java | 3 --- .../apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java | 3 --- .../tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java | 3 --- .../org/apache/tinkerpop/gremlin/structure/io/gryo/GryoIo.java| 3 --- 4 files changed, 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8fd3bf21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java index 0971e31..bae56c5 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Io.java @@ -18,7 +18,6 @@ */ package org.apache.tinkerpop.gremlin.structure.io; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.structure.Graph; import java.io.IOException; @@ -32,9 +31,7 @@ import java.util.function.Consumer; * internal {@link Mapper} (if the format has such capability). * * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.4.0, replaced by {@link GraphTraversalSource#io(String)}. */ -@Deprecated public interface Io { /** http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8fd3bf21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java index b6af646..88431bf 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLIo.java @@ -18,7 +18,6 @@ */ package org.apache.tinkerpop.gremlin.structure.io.graphml; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.Io; import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; @@ -38,9 +37,7 @@ import java.util.function.Consumer; * such things. * * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.4.0, replaced by {@link GraphTraversalSource#io(String)}. */ -@Deprecated public final class GraphMLIo implements Io { private final Graph graph; private Optional> onMapper; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8fd3bf21/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java index 7f8b835..a3923a1 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java @@ -18,7 +18,6 @@ */ package org.apache.tinkerpop.gremlin.structure.io.graphson; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.io.Io; import org.apache.tinkerpop.gremlin.structure.io.IoRegistry; @@ -37,9 +36,7 @@ import java.util.function.Consumer; * interfaces should see the {@link GraphSONMapper} for information on the expectations for the {@link IoRegistry}.
tinkerpop git commit: dedup build-helper-maven-plugin - CTR
Repository: tinkerpop Updated Branches: refs/heads/tp33 c49c0ccb3 -> dfe79c24f dedup build-helper-maven-plugin - CTR Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/dfe79c24 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/dfe79c24 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/dfe79c24 Branch: refs/heads/tp33 Commit: dfe79c24f4decb667ad20c729928a50f8cb1ec0b Parents: c49c0cc Author: Robert Dale Authored: Tue Jul 31 13:12:31 2018 -0400 Committer: Robert Dale Committed: Tue Jul 31 13:12:31 2018 -0400 -- pom.xml | 16 +--- 1 file changed, 1 insertion(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dfe79c24/pom.xml -- diff --git a/pom.xml b/pom.xml index b669872..f2629ad 100644 --- a/pom.xml +++ b/pom.xml @@ -305,6 +305,7 @@ limitations under the License. false + parse-version @@ -407,21 +408,6 @@ limitations under the License. - - -org.codehaus.mojo -build-helper-maven-plugin - 3.0.0 - - -parse-version - -parse-version - -validate - - - org.revapi revapi-maven-plugin
[1/2] tinkerpop git commit: dedup build-helper-maven-plugin - CTR
Repository: tinkerpop Updated Branches: refs/heads/master a2db39cc7 -> f50aeb6d6 dedup build-helper-maven-plugin - CTR Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/dfe79c24 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/dfe79c24 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/dfe79c24 Branch: refs/heads/master Commit: dfe79c24f4decb667ad20c729928a50f8cb1ec0b Parents: c49c0cc Author: Robert Dale Authored: Tue Jul 31 13:12:31 2018 -0400 Committer: Robert Dale Committed: Tue Jul 31 13:12:31 2018 -0400 -- pom.xml | 16 +--- 1 file changed, 1 insertion(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dfe79c24/pom.xml -- diff --git a/pom.xml b/pom.xml index b669872..f2629ad 100644 --- a/pom.xml +++ b/pom.xml @@ -305,6 +305,7 @@ limitations under the License. false + parse-version @@ -407,21 +408,6 @@ limitations under the License. - - -org.codehaus.mojo -build-helper-maven-plugin - 3.0.0 - - -parse-version - -parse-version - -validate - - - org.revapi revapi-maven-plugin
[2/2] tinkerpop git commit: Merge branch 'tp33'
Merge branch 'tp33' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f50aeb6d Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f50aeb6d Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f50aeb6d Branch: refs/heads/master Commit: f50aeb6d62009845f42d9558b7cc8e576c91cf4e Parents: a2db39c dfe79c2 Author: Robert Dale Authored: Tue Jul 31 13:12:40 2018 -0400 Committer: Robert Dale Committed: Tue Jul 31 13:12:40 2018 -0400 -- pom.xml | 16 +--- 1 file changed, 1 insertion(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f50aeb6d/pom.xml --
tinkerpop git commit: Add ConnectionPool min and max sizes TINKERPOP-1774 [Forced Update!]
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1774 6ee8033ae -> a00325f81 (forced update) Add ConnectionPool min and max sizes TINKERPOP-1774 The Gremlin.Net ConnectionPool now has min and max sizes. The pool will be initialized with the configured minimum number of connections on creation. It will also no longer create an unlimited number of connections. Instead, a TimeoutException will be thrown when the max limit is reached and no connection became available within a configurable time. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a00325f8 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a00325f8 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a00325f8 Branch: refs/heads/TINKERPOP-1774 Commit: a00325f81bbfad61d3f17512937a3f4a87d6794d Parents: 7d21ee0 Author: Florian Hockmann Authored: Mon Jul 30 21:45:26 2018 +0200 Committer: Florian Hockmann Committed: Tue Jul 31 19:03:01 2018 +0200 -- CHANGELOG.asciidoc | 1 + docs/src/upgrade/release-3.4.x.asciidoc | 11 ++ .../src/Gremlin.Net/Driver/Connection.cs| 16 +-- .../src/Gremlin.Net/Driver/ConnectionPool.cs| 129 +-- .../Driver/ConnectionPoolSettings.cs| 55 .../src/Gremlin.Net/Driver/GremlinClient.cs | 7 +- .../Driver/GremlinClientExtensions.cs | 12 +- .../Driver/Remote/DriverRemoteConnection.cs | 4 +- .../Gremlin.Net/Driver/WebSocketConnection.cs | 16 +-- .../Process/Traversal/GraphTraversal.cs | 9 -- .../Driver/ConnectionPoolTests.cs | 68 -- .../RemoteConnectionFactory.cs | 4 +- 12 files changed, 239 insertions(+), 93 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a00325f8/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 3054085..930fab5 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -25,6 +25,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima This release also includes changes from <>. +* Added min and max connection pool sizes for Gremlin.Net which are configurable through optional ConnectionPoolSettings. * Bumped to Netty 4.1.25. * Bumped to Spark 2.3.1. * Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a00325f8/docs/src/upgrade/release-3.4.x.asciidoc -- diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc index 2d699dc..5aec7d9 100644 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@ -150,6 +150,17 @@ when dealing with that event. To make this easier, the event now raises with a ` link:https://issues.apache.org/jira/browse/TINKERPOP-1831[TINKERPOP-1831] + Gremlin.Net: Configurable Max and Min ConnectionPool Sizes + +Gremlin.Net's `ConnectionPool` now has a minimum and a maximum size. These sizes are configurable through added +`ConnectionPoolSettings`. The minimum size determines how many connections are initially created. The maximum size +is an upper limit of connections that can be created. When this limit is reached and another connection is needed, +then the connection pool waits for a connection to become available again. The time to be waited is limited by the +newly introduced option `ConnectionPoolSettings.WaitForConnectionTimeout`. A `TimeoutException` is thrown when +no connection becomes available until this timeout is reached. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1774[TINKERPOP-1774] + Deprecation Removal The following deprecated classes, methods or fields have been removed in this version: http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a00325f8/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs -- diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs index 279c708..2452e3e 100644 --- a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs @@ -59,23 +59,23 @@ namespace Gremlin.Net.Driver return await ReceiveAsync().ConfigureAwait(false); } -public async Task ConnectAsync() +public Task ConnectAsync() { -await _webSocketConnection.ConnectAsync(_uri).ConfigureAwait(false); +return
tinkerpop git commit: Add ConnectionPool min and max sizes TINKERPOP-1774 [Forced Update!]
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1774 9761de177 -> 6ee8033ae (forced update) Add ConnectionPool min and max sizes TINKERPOP-1774 The Gremlin.Net ConnectionPool now has min and max sizes. The pool will be initialized with the configured minimum number of connections on creation. It will also no longer create an unlimited number of connections. Instead, a TimeoutException will be thrown when the max limit is reached and no connection became available within a configurable time. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/6ee8033a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/6ee8033a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/6ee8033a Branch: refs/heads/TINKERPOP-1774 Commit: 6ee8033ae171df5ff0781f2026bf5d178091017c Parents: 7d21ee0 Author: Florian Hockmann Authored: Mon Jul 30 21:45:26 2018 +0200 Committer: Florian Hockmann Committed: Tue Jul 31 18:47:19 2018 +0200 -- CHANGELOG.asciidoc | 1 + docs/src/upgrade/release-3.4.x.asciidoc | 11 ++ .../src/Gremlin.Net/Driver/Connection.cs| 16 +-- .../src/Gremlin.Net/Driver/ConnectionPool.cs| 129 +-- .../Driver/ConnectionPoolSettings.cs| 55 .../src/Gremlin.Net/Driver/GremlinClient.cs | 7 +- .../Driver/GremlinClientExtensions.cs | 12 +- .../Driver/Remote/DriverRemoteConnection.cs | 4 +- .../Gremlin.Net/Driver/WebSocketConnection.cs | 16 +-- .../Process/Traversal/GraphTraversal.cs | 9 -- .../Driver/ConnectionPoolTests.cs | 70 -- .../RemoteConnectionFactory.cs | 4 +- 12 files changed, 241 insertions(+), 93 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6ee8033a/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 3054085..930fab5 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -25,6 +25,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima This release also includes changes from <>. +* Added min and max connection pool sizes for Gremlin.Net which are configurable through optional ConnectionPoolSettings. * Bumped to Netty 4.1.25. * Bumped to Spark 2.3.1. * Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6ee8033a/docs/src/upgrade/release-3.4.x.asciidoc -- diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc index 2d699dc..5aec7d9 100644 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@ -150,6 +150,17 @@ when dealing with that event. To make this easier, the event now raises with a ` link:https://issues.apache.org/jira/browse/TINKERPOP-1831[TINKERPOP-1831] + Gremlin.Net: Configurable Max and Min ConnectionPool Sizes + +Gremlin.Net's `ConnectionPool` now has a minimum and a maximum size. These sizes are configurable through added +`ConnectionPoolSettings`. The minimum size determines how many connections are initially created. The maximum size +is an upper limit of connections that can be created. When this limit is reached and another connection is needed, +then the connection pool waits for a connection to become available again. The time to be waited is limited by the +newly introduced option `ConnectionPoolSettings.WaitForConnectionTimeout`. A `TimeoutException` is thrown when +no connection becomes available until this timeout is reached. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1774[TINKERPOP-1774] + Deprecation Removal The following deprecated classes, methods or fields have been removed in this version: http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6ee8033a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs -- diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs index 279c708..2452e3e 100644 --- a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs @@ -59,23 +59,23 @@ namespace Gremlin.Net.Driver return await ReceiveAsync().ConfigureAwait(false); } -public async Task ConnectAsync() +public Task ConnectAsync() { -await _webSocketConnection.ConnectAsync(_uri).ConfigureAwait(false); +return
tinkerpop git commit: Add ConnectionPool min and max sizes TINKERPOP-1774 [Forced Update!]
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1774 cca54cb50 -> 9761de177 (forced update) Add ConnectionPool min and max sizes TINKERPOP-1774 The Gremlin.Net ConnectionPool now has min and max sizes. The pool will be initialized with the configured minimum number of connections on creation. It will also no longer create an unlimited number of connections. Instead, a TimeoutException will be thrown when the max limit is reached and no connection became available within a configurable time. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9761de17 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9761de17 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9761de17 Branch: refs/heads/TINKERPOP-1774 Commit: 9761de177668cdb61b3ef6e0ea9503e478570750 Parents: 7d21ee0 Author: Florian Hockmann Authored: Mon Jul 30 21:45:26 2018 +0200 Committer: Florian Hockmann Committed: Tue Jul 31 17:30:33 2018 +0200 -- CHANGELOG.asciidoc | 1 + docs/src/upgrade/release-3.4.x.asciidoc | 11 ++ .../src/Gremlin.Net/Driver/Connection.cs| 16 +-- .../src/Gremlin.Net/Driver/ConnectionPool.cs| 129 +-- .../Driver/ConnectionPoolSettings.cs| 55 .../src/Gremlin.Net/Driver/GremlinClient.cs | 7 +- .../Driver/GremlinClientExtensions.cs | 12 +- .../Driver/Remote/DriverRemoteConnection.cs | 4 +- .../Gremlin.Net/Driver/WebSocketConnection.cs | 16 +-- .../Process/Traversal/GraphTraversal.cs | 9 -- .../Driver/ConnectionPoolTests.cs | 70 -- .../RemoteConnectionFactory.cs | 4 +- 12 files changed, 241 insertions(+), 93 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9761de17/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 3054085..930fab5 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -25,6 +25,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima This release also includes changes from <>. +* Added min and max connection pool sizes for Gremlin.Net which are configurable through optional ConnectionPoolSettings. * Bumped to Netty 4.1.25. * Bumped to Spark 2.3.1. * Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9761de17/docs/src/upgrade/release-3.4.x.asciidoc -- diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc index 2d699dc..5aec7d9 100644 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@ -150,6 +150,17 @@ when dealing with that event. To make this easier, the event now raises with a ` link:https://issues.apache.org/jira/browse/TINKERPOP-1831[TINKERPOP-1831] + Gremlin.Net: Configurable Max and Min ConnectionPool Sizes + +Gremlin.Net's `ConnectionPool` now has a minimum and a maximum size. These sizes are configurable through added +`ConnectionPoolSettings`. The minimum size determines how many connections are initially created. The maximum size +is an upper limit of connections that can be created. When this limit is reached and another connection is needed, +then the connection pool waits for a connection to become available again. The time to be waited is limited by the +newly introduced option `ConnectionPoolSettings.WaitForConnectionTimeout`. A `TimeoutException` is thrown when +no connection becomes available until this timeout is reached. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1774[TINKERPOP-1774] + Deprecation Removal The following deprecated classes, methods or fields have been removed in this version: http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9761de17/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs -- diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs index 279c708..2452e3e 100644 --- a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs @@ -59,23 +59,23 @@ namespace Gremlin.Net.Driver return await ReceiveAsync().ConfigureAwait(false); } -public async Task ConnectAsync() +public Task ConnectAsync() { -await _webSocketConnection.ConnectAsync(_uri).ConfigureAwait(false); +return
tinkerpop git commit: Add ConnectionPool min and max sizes TINKERPOP-1774 [Forced Update!]
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1774 2828daa6e -> cca54cb50 (forced update) Add ConnectionPool min and max sizes TINKERPOP-1774 The Gremlin.Net ConnectionPool now has min and max sizes. The pool will be initialized with the configured minimum number of connections on creation. It will also no longer create an unlimited number of connections. Instead, a TimeoutException will be thrown when the max limit is reached and no connection became available within a configurable time. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/cca54cb5 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/cca54cb5 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/cca54cb5 Branch: refs/heads/TINKERPOP-1774 Commit: cca54cb502dd26117e1258cf1484dd9ee2f9cf89 Parents: 7d21ee0 Author: Florian Hockmann Authored: Mon Jul 30 21:45:26 2018 +0200 Committer: Florian Hockmann Committed: Tue Jul 31 17:05:40 2018 +0200 -- CHANGELOG.asciidoc | 1 + docs/src/upgrade/release-3.4.x.asciidoc | 11 ++ .../src/Gremlin.Net/Driver/Connection.cs| 16 +-- .../src/Gremlin.Net/Driver/ConnectionPool.cs| 129 +-- .../Driver/ConnectionPoolSettings.cs| 55 .../src/Gremlin.Net/Driver/GremlinClient.cs | 7 +- .../Driver/GremlinClientExtensions.cs | 12 +- .../Driver/Remote/DriverRemoteConnection.cs | 4 +- .../Gremlin.Net/Driver/WebSocketConnection.cs | 16 +-- .../Process/Traversal/GraphTraversal.cs | 9 -- .../Driver/ConnectionPoolTests.cs | 70 -- .../RemoteConnectionFactory.cs | 4 +- 12 files changed, 241 insertions(+), 93 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cca54cb5/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 3054085..930fab5 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -25,6 +25,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima This release also includes changes from <>. +* Added min and max connection pool sizes for Gremlin.Net which are configurable through optional ConnectionPoolSettings. * Bumped to Netty 4.1.25. * Bumped to Spark 2.3.1. * Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cca54cb5/docs/src/upgrade/release-3.4.x.asciidoc -- diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc index 2d699dc..5aec7d9 100644 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@ -150,6 +150,17 @@ when dealing with that event. To make this easier, the event now raises with a ` link:https://issues.apache.org/jira/browse/TINKERPOP-1831[TINKERPOP-1831] + Gremlin.Net: Configurable Max and Min ConnectionPool Sizes + +Gremlin.Net's `ConnectionPool` now has a minimum and a maximum size. These sizes are configurable through added +`ConnectionPoolSettings`. The minimum size determines how many connections are initially created. The maximum size +is an upper limit of connections that can be created. When this limit is reached and another connection is needed, +then the connection pool waits for a connection to become available again. The time to be waited is limited by the +newly introduced option `ConnectionPoolSettings.WaitForConnectionTimeout`. A `TimeoutException` is thrown when +no connection becomes available until this timeout is reached. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1774[TINKERPOP-1774] + Deprecation Removal The following deprecated classes, methods or fields have been removed in this version: http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cca54cb5/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs -- diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs index 279c708..2452e3e 100644 --- a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs @@ -59,23 +59,23 @@ namespace Gremlin.Net.Driver return await ReceiveAsync().ConfigureAwait(false); } -public async Task ConnectAsync() +public Task ConnectAsync() { -await _webSocketConnection.ConnectAsync(_uri).ConfigureAwait(false); +return