[ https://issues.apache.org/jira/browse/TINKERPOP-575?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15200555#comment-15200555 ]
ASF GitHub Bot commented on TINKERPOP-575: ------------------------------------------ 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 <sp...@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 <sp...@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 <sp...@genoprime.com> Date: 2016-03-04T18:30:15Z Minor test refactoring and uncommented tests that were ignored by accident. commit ccbd1de5fb450fa20711ed30c2e774ed3543aef8 Author: Stephen Mallette <sp...@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 <sp...@genoprime.com> Date: 2016-03-04T19:53:32Z Better error handling when processing a Traversal on the server side. commit ecdea1cdfcc2aeefc19a123ff30007ad6b9e7486 Author: Stephen Mallette <sp...@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 <sp...@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 <sp...@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 <sp...@genoprime.com> Date: 2016-03-07T16:41:20Z Added configuration to unroll traversers on the client-side. commit f60a305bb3be0e2619a94905ad5a5bb9dd0b434f Author: Stephen Mallette <sp...@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 <sp...@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 <sp...@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 <sp...@genoprime.com> Date: 2016-03-10T22:11:57Z Improve validations in ServerStrategy. commit 6d7714009069849673d8b6657280bedd5976b705 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-03-10T22:14:07Z Add some javadoc to clarify ServerGraph.edges/vertices() commit d9744d646ca37734b55471596843a54d1dc02869 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-03-10T22:23:32Z Added some javadoc to ServerGraph. commit 9c687aa993eda2320bfdf2f21b81edd334f109f1 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-03-11T11:16:39Z Stopped using Stream to get an Iterator for DriverServerConnection. commit 97f587a477232204843e3e7197751f2cb40a20c5 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-03-11T11:43:59Z Improved method for constructing DriverServerConnection. commit 341f9e4ebc80997528097a0ac70cd93bc0b63764 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-03-11T14:13:39Z Allowed ServerGraph and Cluster to be configured with Configuration object. commit 88a933b41f60c10041f27d741735d3d13654032a Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-03-11T14:16:21Z Renamed package to "remote" from "server". commit 77bcd0e4c45aa2c5c134f983dc382a6bd50684ae Author: Stephen Mallette <sp...@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 <sp...@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 <sp...@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 <sp...@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 <sp...@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 <sp...@genoprime.com> Date: 2016-03-12T00:50:08Z Added LinkedList to GryoMapper. commit ac804fccff18bd92b203b5d8659721e65f9fff00 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-03-12T00:51:15Z Minor refactoring to get apply strategies more efficiently. commit 3d2a8967e886f1530da6977529eb7e221c9233bd Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-03-12T00:52:10Z Added a TestListener to notify GraphProviders of test start/stop activities. commit 439857504cc53752ec99d725ecf06cd5f8cd11e8 Author: Stephen Mallette <sp...@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 <sp...@genoprime.com> Date: 2016-03-12T11:02:25Z Add basic Features to RemoteGraph - disable transactions. commit a2adbcecf0b93510700dd9ef775b97a75592354d Author: Stephen Mallette <sp...@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. ---- > Implement RemoteGraph > --------------------- > > Key: TINKERPOP-575 > URL: https://issues.apache.org/jira/browse/TINKERPOP-575 > Project: TinkerPop > Issue Type: Improvement > Components: driver, process, server > Affects Versions: 3.0.2-incubating > Reporter: Bryn Cooke > Assignee: stephen mallette > Fix For: 3.2.0-incubating > > > 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. -- This message was sent by Atlassian JIRA (v6.3.4#6332)