[ 
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)

Reply via email to