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