Repository: tinkerpop
Updated Branches:
  refs/heads/tp33 d4c76a698 -> c790459dd


TINKERPOP-1778 Change documentation around usage of 
TimedInterruptCustomizerProvider

We really shouldn't promote this setting in Gremlin Server as it competes with 
the scriptEvaluationTimeout. CTR


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2495e8e0
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2495e8e0
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2495e8e0

Branch: refs/heads/tp33
Commit: 2495e8e0f27bd636744f81bfef477f10c19d3778
Parents: eba1df3
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 18 09:20:38 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 18 09:20:38 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                |  3 ++-
 docs/src/reference/gremlin-applications.asciidoc  | 18 ++++++++++--------
 .../src/upgrade/release-3.2.x-incubating.asciidoc |  8 ++++++++
 .../jsr223/GroovyCompilerGremlinPlugin.java       |  7 +++++++
 4 files changed, 27 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2495e8e0/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index a1d0963..ab776d0 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -23,7 +23,8 @@ 
image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 [[release-3-2-10]]
 === TinkerPop 3.2.10 (Release Date: NOT OFFICIALLY RELEASED YET)
 
-* Added Docker images for Gremlin Console and Gremlin Server
+* Removed `ThreadInterruptCustomizerProvider` from documentation as a way to 
timeout
+* Added Docker images for Gremlin Console and Gremlin Server.
 * Fixed bug in `branch()` where reducing steps as options would produce 
incorrect results.
 * Removed recursive handling of streaming results from Gremlin-Python driver 
to avoid max recursion depth errors.
 * Improved performance of `TraversalVertexProgram` and related infrastructure.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2495e8e0/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-applications.asciidoc 
b/docs/src/reference/gremlin-applications.asciidoc
index f044df8..f967a9c 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -1143,7 +1143,7 @@ The following table describes the various configuration 
options that Gremlin Ser
 |scriptEngines.<name>.staticImports |A comma separated list of "static" 
imports to make available to the `ScriptEngine`. |_none_
 |scriptEngines.<name>.scripts |A comma separated list of script files to 
execute on `ScriptEngine` initialization. `Graph` and `TraversalSource` 
instance references produced from scripts will be stored globally in Gremlin 
Server, therefore it is possible to use initialization scripts to add Traversal 
Strategies or create entirely new `Graph` instances all together. Instantiating 
a `LifeCycleHook` in a script provides a way to execute scripts when Gremlin 
Server starts and stops.|_none_
 |scriptEngines.<name>.config |A `Map` of configuration settings for the 
`ScriptEngine`.  These settings are dependent on the `ScriptEngine` 
implementation being used. |_none_
-|scriptEvaluationTimeout |The amount of time in milliseconds before a script 
evaluation times out. The notion of "script evaluation" refers to the time it 
takes for the `ScriptEngine` to do its work and *not* any additional time it 
takes for the result of the evaluation to be iterated and serialized. This 
feature can be turned off by setting the value to `0`. |30000
+|scriptEvaluationTimeout |The amount of time in milliseconds before a script 
evaluation and iteration of result times out. This feature can be turned off by 
setting the value to `0`. |30000
 |serializers |A `List` of `Map` settings, where each `Map` represents a 
`MessageSerializer` implementation to use along with its configuration. If this 
value is not set, then Gremlin Server will configure with GraphSON and Gryo but 
will not register any `ioRegistries` for configured graphs. |_empty_
 |serializers[X].className |The full class name of the `MessageSerializer` 
implementation. |_none_
 |serializers[X].config |A `Map` containing `MessageSerializer` specific 
configurations. |_none_
@@ -1374,18 +1374,22 @@ scriptEngines: {
     scripts: [scripts/empty-sample.groovy],
     config: {
       compilerCustomizerProviders: {
-        
"org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCustomizerProvider":[10000]
 }}}
+        
"org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.ThreadInterruptCustomizerProvider":[]
 }}}}
 
 This configuration sets up the script engine with a 
`CompilerCustomizerProvider` implementation.  The
-`TimedInterruptCustomizerProvider` injects checks that ensure that loops (like 
`while`) can only execute for `10000`
-milliseconds.  With this configuration in place, a remote execution as 
follows, now times out rather than consuming
-the thread continuously:
+`ThreadInterruptCustomizerProvider` injects checks that ensure that loops 
(like `while`) respect thread interruption
+requests. Note that the empty square brackets following the declaration of the 
`ThreadInterruptCustomizerProvider`
+are for parameters - this particular `CustomizerProvider` takes no arguments 
to enable it. With this configuration in
+place and assuming the `scriptEvaluationTimeout` is set to `30000` 
milliseconds, consider the following remote
+execution:
 
 [source,groovy]
+----
 gremlin> :remote connect tinkerpop.server conf/remote.yaml
 ==>Configured localhost/127.0.0.1:8182
 gremlin> :> while(true) { }
-Execution timed out after 10000 units. Start time: Fri Jul 24 11:04:52 EDT 2015
+Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold 
of 30000 ms or evaluation was otherwise cancelled directly for request 
[while(true) { }]
+----
 
 There are a number of pre-packaged `CustomizerProvider` implementations:
 
@@ -1396,7 +1400,6 @@ There are a number of pre-packaged `CustomizerProvider` 
implementations:
 |`CompilationOptionsCustomizerProvider` |The amount of time a script is 
allowed to compile before a warning message is sent to the logs.
 |`ConfigurationCustomizerProvider` |Allows configuration of the Groovy 
`CompilerConfiguration` object by taking a `Map` of key/value pairs where the 
"key" is a property to set on the `CompilerConfiguration`.
 |`ThreadInterruptCustomizerProvider` |Injects checks for thread interruption, 
thus allowing the thread to potentially respect calls to `Thread.interrupt()`
-|`TimedInterruptCustomizerProvider` |Injects checks into loops to interrupt 
them if they exceed the configured timeout in milliseconds.
 |`TypeCheckedCustomizerProvider` |Similar to the above mentioned, 
`CompileStaticCustomizerProvider`, the `TypeCheckedCustomizerProvider` injects 
`TypeChecked` annotations to incoming scripts.  More information on the nature 
of this annotation can be found in the 
link:http://docs.groovy-lang.org/latest/html/documentation/#_the_code_typechecked_code_annotation[Groovy
 Documentation].  It too takes a comma separated list of 
link:http://docs.groovy-lang.org/latest/html/documentation/#Typecheckingextensions-Workingwithextensions[type
 checking extensions].
 |=========================================================
 
@@ -1411,7 +1414,6 @@ scriptEngines: {
     config: {
       compilerCustomizerProviders: {
         
"org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.ThreadInterruptCustomizerProvider":[],
-        
"org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCustomizerProvider":[10000],
         
"org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompilationOptionsCustomizerProvider":[8000],
         
"org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompileStaticCustomizerProvider":["org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension"]}}}}
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2495e8e0/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc 
b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
index 593c631..90dd568 100644
--- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -44,6 +44,14 @@ See: 
link:https://issues.apache.org/jira/browse/TINKERPOP-1897[TINKERPOP-1897],
 
link:http://tinkerpop.apache.org/docs/current/reference#gremlin-console-docker-image[Reference
 Documentation - Gremlin Console],
 
link:http://tinkerpop.apache.org/docs/current/reference#gremlin-server-docker-image[Reference
 Documentation - Gremlin Server],
 
+==== TimedInterruptCustomizerProvider
+
+In Gremlin Server, it is best not to use {{TimedInterruptCustomizerProvider}} 
because it can compete with the
+{{scriptEvaluationTimeout}} setting and produce a different error path. Simply 
rely on {{scriptEvaluationTimeout}}
+as it covers both script evaluation time and result iteration time.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1778[TINKERPOP-1778]
+
 ==== TinkerFactory.createGratefulDead()
 
 The Grateful Dead dataset has been with TinkerPop since the early days of 1.x. 
It has always been available as a

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2495e8e0/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyCompilerGremlinPlugin.java
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyCompilerGremlinPlugin.java
 
b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyCompilerGremlinPlugin.java
index 5680a4f..14757d8 100644
--- 
a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyCompilerGremlinPlugin.java
+++ 
b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyCompilerGremlinPlugin.java
@@ -87,6 +87,13 @@ public class GroovyCompilerGremlinPlugin extends 
AbstractGremlinPlugin {
             return this;
         }
 
+        /**
+         * Introduces timed checks to loops and other portions of a script to 
provide an interrupt for a long running
+         * script. This configuration should not be used in conjunction with 
the Gremlin Server which has its own
+         * {@code scriptEvaluationTimeout} which performs a similar task but 
in a more complete way specific to the
+         * server. Configuring both may lead to inconsistent timeout errors 
returning from the server. This
+         * configuration should only be used if configuring a standalone 
instance fo the {@link GremlinGroovyScriptEngine}.
+         */
         public Builder timedInterrupt(final long timeInMillis) {
             this.timeInMillis = timeInMillis;
             return this;

Reply via email to