[ 
https://issues.apache.org/jira/browse/TINKERPOP-1839?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16259462#comment-16259462
 ] 

stephen mallette commented on TINKERPOP-1839:
---------------------------------------------

It's not really documented anywhere but you can do this:

{code}
gremlin> 
context.setAttribute('dynamic_g',TinkerFactory.createModern().traversal(),javax.script.ScriptContext.GLOBAL_SCOPE)
==>null
gremlin> dynamic_g
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
{code}

As you can see there is a {{context}} object which yields access to the 
underlying bindings (global and otherwise). You can modify that list 
dynamically from script. So I guess in the case of JanusGraph, users could 
actually do:

{code}
context.setAttribute('g', 
ConfiguredGraphFactory.open(<graphName>).traversal(),javax.script.ScriptContext.GLOBAL_SCOPE)
{code}

or perhaps JanusGraph could provide some helper method on 
{{ConfiguredGraphFactory}} that takes the {{context}} and adds it a configured 
graph to global scope. Does that help satisfy this issue?

> We need a way to dynamically modify global bindings on the Gremlin Server.
> --------------------------------------------------------------------------
>
>                 Key: TINKERPOP-1839
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1839
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: server
>    Affects Versions: 3.2.6
>            Reporter: David Pitera
>
> This question on StackOverflow 
> https://stackoverflow.com/questions/47342524/how-to-traverse-graph-created-using-configuredplanfactory-in-janusgraph/47354728?noredirect=1#comment81670711_47354728
>  along with the fact that most language client's interact with the Gremlin 
> Server through the use of a variable bound to a graph of traversal reference, 
> i.e. `graph` is usually bound to a graph and `g` is usually bound to its 
> traversal 
> https://github.com/apache/tinkerpop/blob/master/gremlin-server/scripts/empty-sample.groovy#L40
>  mean that we need a way to bind these dynamically created graphs to the 
> script executor.
> With JanusGraph's notion of dynamic graphs, there is no way to make use of 
> the `withRemote()` functionality or make use of language clients demanding 
> the traversal reference be bound to a variable.
> Therefore, we need a way to dynamically modify the global bindings on the 
> gremlin script engine without having to restart the server.
> Note; I answered the original stack overflow question above, however I am 
> pretty sure my answer is actually incorrect because the global binding will 
> be evaluated once at server start and the evaluated references will be stored 
> in the map and passed into the gremlin executor. Is this true?



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to