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

Stephen Mallette commented on TINKERPOP-2296:
---------------------------------------------

> I do not get it about making a new "bytecode strategy"

sorry, perhaps i'm being confusing. `TraversalStrategies` analyze a 
{{Traversal}} object and perform actions upon it:

https://github.com/apache/tinkerpop/blob/37e6349bb956d4f8f99e6beef9d66d3c36d166dc/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java

There is an entire class of infrastructure in existence to support that 
functionality and it is a first-class operation used by providers and users to 
create advanced optimizations/features. 

When I refer to "bytecode strategy" I'm referring to a similar and new sort of 
functionality in GLVs where we provide a general way in which to analyze and 
modify a {{Bytecode}} object before it is sent to the server. In the same way 
that {{TraversalStrategies}} read and modify a {{Traversal}} something like 
"{{BytecodeStrategies}}" would read and modify {{Bytecode}}. This capability 
would be considered a first-class function that both providers and users would 
make use of to optimize {{Bytecode}} before it is sent to the server. 

So, to be clear, I am not suggesting that we do "bytecode strategy" instead of 
continuing to utilize {{OptionsStrategy}}. I'm saying that we should consider 
whether it makes sense to develop a new first class way to analyze bytecode in 
GLVs. We would then use that new first class process to develop the method to 
analyze the bytecode to find the {{OptionsStrategy}} extract the settings we 
need and place them on the {{RequestMessage}}. If "{{BytecodeStrategies}}" has 
general applicability for other features then we should probably take this 
approach, but if no other uses cases materialize at this time, then I think a 
one-off modification to simply read the bytecode for {{OptionsStrategy}} can be 
used to just make it all work. I hope that helps clarify what I was saying. 
Thanks

> Per query timeout not working from Python
> -----------------------------------------
>
>                 Key: TINKERPOP-2296
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2296
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: python, server
>    Affects Versions: 3.4.3
>         Environment: Gremlin Server 3.4.3 and GremlinPython latest
>            Reporter: Kelvin R. Lawrence
>            Priority: Major
>
> I had a discussion with [~spmallette] about some problems I have been running 
> into trying to get per query timeouts to work using the Python GLV client. As 
> best as I can tell the timeout setting just gets ignored. The query executes 
> to completion taking as many seconds as needed. Stephen asked for a Jira so 
> writing this up here.
> Using the air-routes data set this query can take a few seconds so should 
> definitely time out at 200ms. Using the Java client the same query works 
> although I had an exception when using the Binary serializer but it worked 
> when using GraphSON. I don't know yet if that is relevant to this issue.
>  
> {{paths = (g.V().with_('scriptEvaluationTimeout', 200).}}
> {{         has('airport', 'code', 'AUS').}}
> {{         repeat(__.out('route').simplePath()).}}
> {{         until(__.has('code', 'AGR')).}}
> {{         path().by('code').}}
> {{         limit(10).}}
> {{         toList())}}
>  
> {{As a sidenote it would be nice if the Python client had an equivalent of 
> the Java Tokens class so that constant variable names rather than strings 
> could be used for the 'scriptEvaluationTimeout' part.}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to