Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Implemented
    • Affects Version/s: 3.0.2-incubating
    • Fix Version/s: 3.2.0-incubating
    • Component/s: driver, process, server
    • Labels:
      None

      Description

      Consider implementing a graph that allows remote execution of portions of a gremlin query and locally executes steps that have lambda expressions.

      Graph r = new RemoteGraph("192.168.0.10") //Gremlin server

      r.V().has("age", 35).out().in().sideEffect(v->

      {do something});

      gets optimised to
      r.remoteStep("g.V().has("age", 35).out().in()").sideEffect(v->{do something}

      );

      The remote step would be transmitted to the server for execution and the results pulled back allow the side effect to take place locally.

      All remote step optimisation is done via traversal strategy.

      Things to think about are:
      Transactions have to span multiple requests to the server.
      Strategies only work on the server side.

        Issue Links

          Activity

          Hide
          okram Marko A. Rodriguez added a comment -

          This is in the works – its called ServerGraph and has been a part of the recent discussions around the refactoring on TraversalEngine.

          Show
          okram Marko A. Rodriguez added a comment - This is in the works – its called ServerGraph and has been a part of the recent discussions around the refactoring on TraversalEngine .
          Hide
          okram Marko A. Rodriguez added a comment -

          Oh, and it wouldn't require remoteStep(string). Its just g.V.has(age,35).out().in() ... Like GraphComputer, a ServerStep is added to the end and on "first next()", the traversal is sent over the wire with an iterator passed back. In other words, no fat string.

          Show
          okram Marko A. Rodriguez added a comment - Oh, and it wouldn't require remoteStep(string) . Its just g.V.has(age,35).out().in() ... Like GraphComputer , a ServerStep is added to the end and on "first next()", the traversal is sent over the wire with an iterator passed back. In other words, no fat string.
          Hide
          bryncooke Bryn Cooke added a comment -

          Yeah, it was just to illustrate the the intent. I am super glad this feature is in the works.

          Show
          bryncooke Bryn Cooke added a comment - Yeah, it was just to illustrate the the intent. I am super glad this feature is in the works.
          Hide
          okram Marko A. Rodriguez added a comment -
          ServerGraph graph = ServerGraphFactory.open(…)
          TraversalSource g = graph.traversal(standard)
          Iterator<Vertex> results = g.V.out.out
          

          ServerGraph will have ServerTraversalEngine which is what does the serialization of the traversal to ServerGraph. Analogous to how ComputerTraversalEngine works.

          Show
          okram Marko A. Rodriguez added a comment - ServerGraph graph = ServerGraphFactory.open(…) TraversalSource g = graph.traversal(standard) Iterator<Vertex> results = g.V.out.out ServerGraph will have ServerTraversalEngine which is what does the serialization of the traversal to ServerGraph. Analogous to how ComputerTraversalEngine works.
          Hide
          spmallette stephen mallette added a comment -

          I'm not sure how compliant RemoteGraph would need to be with the test suite, but there would potentially need to be some changes to error handling in the Gremlin Server protocol to get RemoteGraph fully compliant with it. Gremlin Server doesn't send back java exceptions - it generalizes errors so that they are useful to any programming language. So you lose some specificity in the exceptions thrown.

          Show
          spmallette stephen mallette added a comment - I'm not sure how compliant RemoteGraph would need to be with the test suite, but there would potentially need to be some changes to error handling in the Gremlin Server protocol to get RemoteGraph fully compliant with it. Gremlin Server doesn't send back java exceptions - it generalizes errors so that they are useful to any programming language. So you lose some specificity in the exceptions thrown.
          Hide
          mbroecheler Matthias Broecheler added a comment -

          RemoteGraph would be an extremely useful tool to have when playing with OLTP+OLAP integration in particular TP3 implementations. In most such cases, you would want to execute within an OLAP context and then identify parts of a traversal that are best executed OLTP-style. Since you don't want to open an embedded OLTP graph database to the same graph source data within an OLAP context, RemoteGraph would be a handy tool to send those traversals to another machine or process to execute the traversal there.

          Show
          mbroecheler Matthias Broecheler added a comment - RemoteGraph would be an extremely useful tool to have when playing with OLTP+OLAP integration in particular TP3 implementations. In most such cases, you would want to execute within an OLAP context and then identify parts of a traversal that are best executed OLTP-style. Since you don't want to open an embedded OLTP graph database to the same graph source data within an OLAP context, RemoteGraph would be a handy tool to send those traversals to another machine or process to execute the traversal there.
          Hide
          rjbriody Bob Briody added a comment -

          Will variables defined in the local executor context be available in a traversal? i.e, would this work
          def name = "bob"; remoteGraphTraversal.V().has("name", name")

          Show
          rjbriody Bob Briody added a comment - Will variables defined in the local executor context be available in a traversal? i.e, would this work def name = "bob"; remoteGraphTraversal.V().has("name", name")
          Hide
          spmallette stephen mallette added a comment -

          Bob Briody i would think that your specific example would work because the value of "name" would be stored in the step and serialized with the Traversal to be sent to the server.

          Show
          spmallette stephen mallette added a comment - Bob Briody i would think that your specific example would work because the value of "name" would be stored in the step and serialized with the Traversal to be sent to the server.
          Hide
          okram Marko A. Rodriguez added a comment -

          Before we get into this, we need an easy way to create TraversalEngines. This is related: https://issues.apache.org/jira/browse/TINKERPOP3-971

          Show
          okram Marko A. Rodriguez added a comment - Before we get into this, we need an easy way to create TraversalEngines . This is related: https://issues.apache.org/jira/browse/TINKERPOP3-971
          Hide
          okram Marko A. Rodriguez added a comment -

          I explain in https://issues.apache.org/jira/browse/TINKERPOP3-971 what GremlinServerStrategy does and how it solves this ticket.

          Show
          okram Marko A. Rodriguez added a comment - I explain in https://issues.apache.org/jira/browse/TINKERPOP3-971 what GremlinServerStrategy does and how it solves this ticket.
          Hide
          okram Marko A. Rodriguez added a comment -

          This is ready to be implemented when TINKERPOP-971 is merged. Should be fun.

          Show
          okram Marko A. Rodriguez added a comment - This is ready to be implemented when TINKERPOP-971 is merged. Should be fun.
          Hide
          spmallette stephen mallette added a comment -

          Renamed the title of this a bit since we won't actually build a RemoteGraph for this.

          Show
          spmallette stephen mallette added a comment - Renamed the title of this a bit since we won't actually build a RemoteGraph for this.
          Hide
          githubbot ASF GitHub Bot added a comment -

          GitHub user spmallette opened a pull request:

          https://github.com/apache/incubator-tinkerpop/pull/269

          TINKERPOP-575 RemoteGraph

          https://issues.apache.org/jira/browse/TINKERPOP-575

          This is a brute of a PR that introduces `RemoteGraph`. The tests execute as part of gremlin-server with regular old `mvn clean install`. There's lots of optimizations and improvements we could make all around, but we at least have something fully functional at this point with this PR.

          Docs generate nice...you can find the `RemoteGraph` docs here:

          http://tinkerpop.apache.org/docs/3.2.0-SNAPSHOT/reference/#connecting-via-remotegraph

          The upgrade docs are here:

          http://tinkerpop.apache.org/docs/3.2.0-SNAPSHOT/upgrade/#_remotegraph

          The developer/provider docs are here:

          http://tinkerpop.apache.org/docs/3.2.0-SNAPSHOT/dev/provider/#remoteconnection-implementations

          VOTE +1 - phew!

          You can merge this pull request into a Git repository by running:

          $ git pull https://github.com/apache/incubator-tinkerpop TINKERPOP-575

          Alternatively you can review and apply these changes as the patch at:

          https://github.com/apache/incubator-tinkerpop/pull/269.patch

          To close this pull request, make a commit to your master/trunk branch
          with (at least) the following in the commit message:

          This closes #269


          commit b74c8309d8799709b88a694f690bb60138947faf
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-04T16:10:10Z

          Hooked together a basic but function infrastructure for traversal op

          The traversal op allows a serialized Traversal to be shipped to Gremlin Server which can then be deserialized for execution on the server. That eliminates the need for the ScriptEngine compilation. This current commit is really sketchy and just demonstrates operations. Needs a lot more work to be fully functional.

          commit 3608637f94918b950c0a3703647e018394ede37e
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-04T18:08:39Z

          Added validation to Traversal op for Gremlin Server.

          Validation ensured that a single alias was specified with a Traversal. Without the alias it isn't possible to know how to attach the server side Graph to the Traversal once it is deserialized.

          commit 520a906ab637e7f7e21610bb4d961352f102d4aa
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-04T18:30:15Z

          Minor test refactoring and uncommented tests that were ignored by accident.

          commit ccbd1de5fb450fa20711ed30c2e774ed3543aef8
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-04T19:24:16Z

          Minor refactoring on the Client.

          Moved some methods around and added a submitAsync(Traversal).

          commit f4dfc6a7f7e2b43b308877f49eb78098cea7ba2a
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-04T19:53:32Z

          Better error handling when processing a Traversal on the server side.

          commit ecdea1cdfcc2aeefc19a123ff30007ad6b9e7486
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-04T20:15:10Z

          Added transaction management to the TraversalOpProcessor.

          Open and close transactions on each request and do error handling as needed.

          commit efba1d8bda15750262c84e099c54fc9342e1764d
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-07T14:32:28Z

          Compile the traversal on the server first before trying to get Traversers.

          Without compiling, the Traversal returns no Traversers.

          commit a5579824dafe20456520242822b3002710768f4a
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-07T14:33:41Z

          Refactored Client/Cluster to take Client.Settings

          Client.Settings provides a more extensible manner in which to pass the growing number of configurations to the Client instances.

          commit a5e46801123f0b4c1fe04317ab86c5710007bda2
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-07T16:41:20Z

          Added configuration to unroll traversers on the client-side.

          commit f60a305bb3be0e2619a94905ad5a5bb9dd0b434f
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-10T21:07:36Z

          Basics of the ServerStrategy are in place at ths point.

          Traversals are getting sent to the server and results are returning. Have a basic test that demonstrates operations. Still needs considerably work.

          commit 088eda184e26bfa6a5b0f4f257a40778d8fd2119
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-10T21:41:43Z

          Implemented basics for ServerGraph.

          Unsure if this is working in full at this point, but a simple test seems to pass.

          commit cb6974474906103173b456bcc99ea0e09c9c1dd5
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-10T22:05:51Z

          ServerGraph implementation is working more correctly now.

          ServerStrategy now holds no state. Removed withServer() methods from TraversalSource. ServerGraph can support multiple ServerConnection and Graph implementations.

          commit e479769613971e0793c358d097de7b340c4105c6
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-10T22:11:57Z

          Improve validations in ServerStrategy.

          commit 6d7714009069849673d8b6657280bedd5976b705
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-10T22:14:07Z

          Add some javadoc to clarify ServerGraph.edges/vertices()

          commit d9744d646ca37734b55471596843a54d1dc02869
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-10T22:23:32Z

          Added some javadoc to ServerGraph.

          commit 9c687aa993eda2320bfdf2f21b81edd334f109f1
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-11T11:16:39Z

          Stopped using Stream to get an Iterator for DriverServerConnection.

          commit 97f587a477232204843e3e7197751f2cb40a20c5
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-11T11:43:59Z

          Improved method for constructing DriverServerConnection.

          commit 341f9e4ebc80997528097a0ac70cd93bc0b63764
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-11T14:13:39Z

          Allowed ServerGraph and Cluster to be configured with Configuration object.

          commit 88a933b41f60c10041f27d741735d3d13654032a
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-11T14:16:21Z

          Renamed package to "remote" from "server".

          commit 77bcd0e4c45aa2c5c134f983dc382a6bd50684ae
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-11T14:18:22Z

          Renamed "server" classes to "remote".

          "Remote" is a better way to describe this feature as the traversal does not need to be necessarily submitted to a "server" for processing.

          commit 65aac790bf5b8281ee5708a29b36a5a373d23491
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-11T23:10:27Z

          Renamed test so that it is actually an integration test.

          Added generate-all.groovy for the RemoteServer integration testing.

          commit 7a18c4a7851abbf24cac5700ef78a005e44de427
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-11T23:11:18Z

          Made sure generate-all.groovy doesn't get into the distribution.

          That script is just for tests.

          commit 938f8fcbc2a30b2db776abae125be2c70b8e964a
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-11T23:13:03Z

          Rework tests that used "graph" instance for asserts.

          Remote tests really don't have access to a true "graph" because they use RemoteGraph and therefore those methods won't work and tests failed.

          commit ff0edac655123a66c70bca9a9340abdf43dd67ef
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-12T00:49:16Z

          GroupStep can't hold transients or else RemoteGraph doesn't serialize things properly.

          commit 725d8798566d5ad3bf5158d889e24676de581270
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-12T00:50:08Z

          Added LinkedList to GryoMapper.

          commit ac804fccff18bd92b203b5d8659721e65f9fff00
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-12T00:51:15Z

          Minor refactoring to get apply strategies more efficiently.

          commit 3d2a8967e886f1530da6977529eb7e221c9233bd
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-12T00:52:10Z

          Added a TestListener to notify GraphProviders of test start/stop activities.

          commit 439857504cc53752ec99d725ecf06cd5f8cd11e8
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-12T00:53:01Z

          Many changes to get the process suite working against RemoteGraph.

          Lots of failing tests remain, but lots of tests passing too.

          commit 3312e27de070f08e5939665032b7c88afcf82ef4
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-12T11:02:25Z

          Add basic Features to RemoteGraph - disable transactions.

          commit a2adbcecf0b93510700dd9ef775b97a75592354d
          Author: Stephen Mallette <spmva@genoprime.com>
          Date: 2016-03-12T11:34:29Z

          Refactored RemoteGraphProvider to speed up tests.

          Cut the time down to about two-thirds of what it was by caching RemoteGraph instances, clearing graphs on the server with a Client instance and re-using the Cluster object.


          Show
          githubbot ASF GitHub Bot added a comment - GitHub user spmallette opened a pull request: https://github.com/apache/incubator-tinkerpop/pull/269 TINKERPOP-575 RemoteGraph https://issues.apache.org/jira/browse/TINKERPOP-575 This is a brute of a PR that introduces `RemoteGraph`. The tests execute as part of gremlin-server with regular old `mvn clean install`. There's lots of optimizations and improvements we could make all around, but we at least have something fully functional at this point with this PR. Docs generate nice...you can find the `RemoteGraph` docs here: http://tinkerpop.apache.org/docs/3.2.0-SNAPSHOT/reference/#connecting-via-remotegraph The upgrade docs are here: http://tinkerpop.apache.org/docs/3.2.0-SNAPSHOT/upgrade/#_remotegraph The developer/provider docs are here: http://tinkerpop.apache.org/docs/3.2.0-SNAPSHOT/dev/provider/#remoteconnection-implementations VOTE +1 - phew! You can merge this pull request into a Git repository by running: $ git pull https://github.com/apache/incubator-tinkerpop TINKERPOP-575 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/incubator-tinkerpop/pull/269.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #269 commit b74c8309d8799709b88a694f690bb60138947faf Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-04T16:10:10Z Hooked together a basic but function infrastructure for traversal op The traversal op allows a serialized Traversal to be shipped to Gremlin Server which can then be deserialized for execution on the server. That eliminates the need for the ScriptEngine compilation. This current commit is really sketchy and just demonstrates operations. Needs a lot more work to be fully functional. commit 3608637f94918b950c0a3703647e018394ede37e Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-04T18:08:39Z Added validation to Traversal op for Gremlin Server. Validation ensured that a single alias was specified with a Traversal. Without the alias it isn't possible to know how to attach the server side Graph to the Traversal once it is deserialized. commit 520a906ab637e7f7e21610bb4d961352f102d4aa Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-04T18:30:15Z Minor test refactoring and uncommented tests that were ignored by accident. commit ccbd1de5fb450fa20711ed30c2e774ed3543aef8 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-04T19:24:16Z Minor refactoring on the Client. Moved some methods around and added a submitAsync(Traversal). commit f4dfc6a7f7e2b43b308877f49eb78098cea7ba2a Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-04T19:53:32Z Better error handling when processing a Traversal on the server side. commit ecdea1cdfcc2aeefc19a123ff30007ad6b9e7486 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-04T20:15:10Z Added transaction management to the TraversalOpProcessor. Open and close transactions on each request and do error handling as needed. commit efba1d8bda15750262c84e099c54fc9342e1764d Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-07T14:32:28Z Compile the traversal on the server first before trying to get Traversers. Without compiling, the Traversal returns no Traversers. commit a5579824dafe20456520242822b3002710768f4a Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-07T14:33:41Z Refactored Client/Cluster to take Client.Settings Client.Settings provides a more extensible manner in which to pass the growing number of configurations to the Client instances. commit a5e46801123f0b4c1fe04317ab86c5710007bda2 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-07T16:41:20Z Added configuration to unroll traversers on the client-side. commit f60a305bb3be0e2619a94905ad5a5bb9dd0b434f Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-10T21:07:36Z Basics of the ServerStrategy are in place at ths point. Traversals are getting sent to the server and results are returning. Have a basic test that demonstrates operations. Still needs considerably work. commit 088eda184e26bfa6a5b0f4f257a40778d8fd2119 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-10T21:41:43Z Implemented basics for ServerGraph. Unsure if this is working in full at this point, but a simple test seems to pass. commit cb6974474906103173b456bcc99ea0e09c9c1dd5 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-10T22:05:51Z ServerGraph implementation is working more correctly now. ServerStrategy now holds no state. Removed withServer() methods from TraversalSource. ServerGraph can support multiple ServerConnection and Graph implementations. commit e479769613971e0793c358d097de7b340c4105c6 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-10T22:11:57Z Improve validations in ServerStrategy. commit 6d7714009069849673d8b6657280bedd5976b705 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-10T22:14:07Z Add some javadoc to clarify ServerGraph.edges/vertices() commit d9744d646ca37734b55471596843a54d1dc02869 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-10T22:23:32Z Added some javadoc to ServerGraph. commit 9c687aa993eda2320bfdf2f21b81edd334f109f1 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-11T11:16:39Z Stopped using Stream to get an Iterator for DriverServerConnection. commit 97f587a477232204843e3e7197751f2cb40a20c5 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-11T11:43:59Z Improved method for constructing DriverServerConnection. commit 341f9e4ebc80997528097a0ac70cd93bc0b63764 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-11T14:13:39Z Allowed ServerGraph and Cluster to be configured with Configuration object. commit 88a933b41f60c10041f27d741735d3d13654032a Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-11T14:16:21Z Renamed package to "remote" from "server". commit 77bcd0e4c45aa2c5c134f983dc382a6bd50684ae Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-11T14:18:22Z Renamed "server" classes to "remote". "Remote" is a better way to describe this feature as the traversal does not need to be necessarily submitted to a "server" for processing. commit 65aac790bf5b8281ee5708a29b36a5a373d23491 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-11T23:10:27Z Renamed test so that it is actually an integration test. Added generate-all.groovy for the RemoteServer integration testing. commit 7a18c4a7851abbf24cac5700ef78a005e44de427 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-11T23:11:18Z Made sure generate-all.groovy doesn't get into the distribution. That script is just for tests. commit 938f8fcbc2a30b2db776abae125be2c70b8e964a Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-11T23:13:03Z Rework tests that used "graph" instance for asserts. Remote tests really don't have access to a true "graph" because they use RemoteGraph and therefore those methods won't work and tests failed. commit ff0edac655123a66c70bca9a9340abdf43dd67ef Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-12T00:49:16Z GroupStep can't hold transients or else RemoteGraph doesn't serialize things properly. commit 725d8798566d5ad3bf5158d889e24676de581270 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-12T00:50:08Z Added LinkedList to GryoMapper. commit ac804fccff18bd92b203b5d8659721e65f9fff00 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-12T00:51:15Z Minor refactoring to get apply strategies more efficiently. commit 3d2a8967e886f1530da6977529eb7e221c9233bd Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-12T00:52:10Z Added a TestListener to notify GraphProviders of test start/stop activities. commit 439857504cc53752ec99d725ecf06cd5f8cd11e8 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-12T00:53:01Z Many changes to get the process suite working against RemoteGraph. Lots of failing tests remain, but lots of tests passing too. commit 3312e27de070f08e5939665032b7c88afcf82ef4 Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-12T11:02:25Z Add basic Features to RemoteGraph - disable transactions. commit a2adbcecf0b93510700dd9ef775b97a75592354d Author: Stephen Mallette <spmva@genoprime.com> Date: 2016-03-12T11:34:29Z Refactored RemoteGraphProvider to speed up tests. Cut the time down to about two-thirds of what it was by caching RemoteGraph instances, clearing graphs on the server with a Client instance and re-using the Cluster object.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user dkuppitz commented on the pull request:

          https://github.com/apache/incubator-tinkerpop/pull/269#issuecomment-198125740

          Wonderful!

          VOTE: +1

          Show
          githubbot ASF GitHub Bot added a comment - Github user dkuppitz commented on the pull request: https://github.com/apache/incubator-tinkerpop/pull/269#issuecomment-198125740 Wonderful! VOTE: +1
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user okram commented on the pull request:

          https://github.com/apache/incubator-tinkerpop/pull/269#issuecomment-198126388

          The insane PR. VOTE +1.

          Show
          githubbot ASF GitHub Bot added a comment - Github user okram commented on the pull request: https://github.com/apache/incubator-tinkerpop/pull/269#issuecomment-198126388 The insane PR. VOTE +1.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user mpollmeier commented on the pull request:

          https://github.com/apache/incubator-tinkerpop/pull/269#issuecomment-198167176

          Awesome to see progress on this! I had some trouble getting it to work though. Here's what I id:

          build it
          ```
          git checkout TINKERPOP-575 #currently e01a71b
          mvn clean install -DskipTests
          ```

          start gremlin-server
          ```
          unzip $TP_SRC/gremlin-server/target/apache-gremlin-server-3.2.0-SNAPSHOT-distribution.zip
          cd apache-gremlin-server-3.2.0-SNAPSHOT
          bin/gremlin-server.sh conf/gremlin-server-modern.yaml
          ```

          connect and run traversal
          ```
          cd gremlin-console/target/apache-gremlin-console-3.2.0-SNAPSHOT-standalone
          bin/gremlin.sh
          \,,,/
          (o o)
          ----oOOo(3)oOOo----
          plugin activated: tinkerpop.server
          plugin activated: tinkerpop.utilities
          plugin activated: tinkerpop.tinkergraph
          gremlin> graph = RemoteGraph.open('conf/remote-graph.properties')
          ==>remotegraph[DriverServerConnection-localhost/127.0.0.1:8182 [graph='graph]]
          gremlin> g = graph.traversal()
          ==>graphtraversalsource[remotegraph[DriverServerConnection-localhost/127.0.0.1:8182 [graph='graph]], standard]
          gremlin> g.V().valueMap(true)
          ```

          No output
          PS1: works fine for local TinkerGraph instance
          PS2: Wireshark tells me that there is some communication between the REPL and gremlin-server (three TCP packets).

          Show
          githubbot ASF GitHub Bot added a comment - Github user mpollmeier commented on the pull request: https://github.com/apache/incubator-tinkerpop/pull/269#issuecomment-198167176 Awesome to see progress on this! I had some trouble getting it to work though. Here's what I id: build it ``` git checkout TINKERPOP-575 #currently e01a71b mvn clean install -DskipTests ``` start gremlin-server ``` unzip $TP_SRC/gremlin-server/target/apache-gremlin-server-3.2.0-SNAPSHOT-distribution.zip cd apache-gremlin-server-3.2.0-SNAPSHOT bin/gremlin-server.sh conf/gremlin-server-modern.yaml ``` connect and run traversal ``` cd gremlin-console/target/apache-gremlin-console-3.2.0-SNAPSHOT-standalone bin/gremlin.sh \,,,/ (o o) ---- oOOo (3) oOOo ---- plugin activated: tinkerpop.server plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin> graph = RemoteGraph.open('conf/remote-graph.properties') ==>remotegraph[DriverServerConnection-localhost/127.0.0.1:8182 [graph='graph] ] gremlin> g = graph.traversal() ==>graphtraversalsource[remotegraph[DriverServerConnection-localhost/127.0.0.1:8182 [graph='graph] ], standard] gremlin> g.V().valueMap(true) ``` No output PS1: works fine for local TinkerGraph instance PS2: Wireshark tells me that there is some communication between the REPL and gremlin-server (three TCP packets).
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user spmallette commented on the pull request:

          https://github.com/apache/incubator-tinkerpop/pull/269#issuecomment-198311155

          @mpollmeier that was a nice bug find. i never unpackaged the zip and my assembly files had a bug in them. the `scripts` directory wasn't being included so the graph couldn't get initialized with data which so you were executing your remotes against an empty graph and getting no results. Should work for you now if you try again. Reviewing the distributions now to be sure nothing else is amiss.

          Show
          githubbot ASF GitHub Bot added a comment - Github user spmallette commented on the pull request: https://github.com/apache/incubator-tinkerpop/pull/269#issuecomment-198311155 @mpollmeier that was a nice bug find. i never unpackaged the zip and my assembly files had a bug in them. the `scripts` directory wasn't being included so the graph couldn't get initialized with data which so you were executing your remotes against an empty graph and getting no results. Should work for you now if you try again. Reviewing the distributions now to be sure nothing else is amiss.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user asfgit closed the pull request at:

          https://github.com/apache/incubator-tinkerpop/pull/269

          Show
          githubbot ASF GitHub Bot added a comment - Github user asfgit closed the pull request at: https://github.com/apache/incubator-tinkerpop/pull/269
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user mpollmeier commented on the pull request:

          https://github.com/apache/incubator-tinkerpop/pull/269#issuecomment-198622155

          works fine now, thanks!

          Show
          githubbot ASF GitHub Bot added a comment - Github user mpollmeier commented on the pull request: https://github.com/apache/incubator-tinkerpop/pull/269#issuecomment-198622155 works fine now, thanks!

            People

            • Assignee:
              spmallette stephen mallette
              Reporter:
              bryncooke Bryn Cooke
            • Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development