Merge branch 'TINKERPOP-1387' into tp32
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2fedaace Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2fedaace Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2fedaace Branch: refs/heads/TINKERPOP-1625 Commit: 2fedaace4f40e98a0175048f468e4f826b2550cf Parents: a314c9c 38dc621 Author: Marko A. Rodriguez <okramma...@gmail.com> Authored: Fri Mar 24 08:36:43 2017 -0600 Committer: Marko A. Rodriguez <okramma...@gmail.com> Committed: Fri Mar 24 08:36:43 2017 -0600 ---------------------------------------------------------------------- CHANGELOG.asciidoc | 5 + docs/src/reference/the-traversal.asciidoc | 58 +++ .../upgrade/release-3.2.x-incubating.asciidoc | 16 + .../gremlin/process/traversal/Path.java | 57 +++ .../traversal/dsl/graph/GraphTraversal.java | 423 +++++++++---------- .../traversal/step/FromToModulating.java | 48 +++ .../traversal/step/filter/CyclicPathStep.java | 46 -- .../traversal/step/filter/PathFilterStep.java | 139 ++++++ .../traversal/step/filter/SimplePathStep.java | 47 --- .../process/traversal/step/map/AddEdgeStep.java | 19 +- .../process/traversal/step/map/PathStep.java | 29 +- .../optimization/FilterRankingStrategy.java | 38 +- .../IncidentToAdjacentStrategy.java | 7 +- .../gremlin/process/traversal/PathTest.java | 128 +++++- .../step/filter/CyclicPathStepTest.java | 37 -- .../step/filter/PathFilterStepTest.java | 53 +++ .../step/filter/SimplePathStepTest.java | 37 -- .../step/filter/GroovyCyclicPathTest.groovy | 6 + .../step/filter/GroovySimplePathTest.groovy | 5 + .../traversal/step/map/GroovyPathTest.groovy | 5 + .../process/traversal/step/ComplexTest.java | 49 ++- .../traversal/step/filter/CyclicPathTest.java | 16 +- .../traversal/step/filter/SimplePathTest.java | 29 +- .../process/traversal/step/map/PathTest.java | 20 + 24 files changed, 874 insertions(+), 443 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2fedaace/CHANGELOG.asciidoc ---------------------------------------------------------------------- diff --cc CHANGELOG.asciidoc index 367e3cc,ab73263..ed26f7a --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@@ -26,16 -26,11 +26,21 @@@ image::https://raw.githubusercontent.co TinkerPop 3.2.5 (Release Date: NOT OFFICIALLY RELEASED YET) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* De-registered metrics on Gremlin Server shutdown. +* Added "help" command option on `:remote config` for plugins that support that feature in the Gremlin Console. +* Allowed for multiple scripts and related arguments to be passed to `gremlin.sh` via `-i` and `-e`. +* Added various metrics to the `GremlinGroovyScriptEngine` around script compilation and exposed them in Gremlin Server. +* Moved the `caffeine` dependency down to `gremlin-groovy` and out of `gremlin-server`. +* Improved script compilation in `GremlinGroovyScriptEngine to use better caching, log long compile times and prevent failed compilations from recompiling on future requests. +* Script compilation is synchronised. +* Script compilation times are placed in to logs. +* Failed scripts will not be recompiled. +* Scripts that take over 5 seconds to compile are logged as a warning. + * Added `cyclicPath().from().to().by()` support to `GraphTraversal`. + * Added `simplePath().from().to().by()` support to `GraphTraversal`. + * Added `path().from().to()` support to `GraphTraversal` so sub-paths can be isolated from the current path. + * Added `FromToModulating` interface for use with `to()`- and `from()`-based step modulators. + * Added `Path.subPath()` which supports isolating a sub-path from `Path` via to/from-labels. * Fixed an `NullPointerException` in `GraphMLReader` that occurred when an `<edge>` didn't have an ID field and the base graph supported ID assignment. * Split `ComputerVerificationStrategy` into two strategies: `ComputerVerificationStrategy` and `ComputerFinalizationStrategy`. * Removed `HasTest.g_V_hasId_compilationEquality` from process test suite as it makes too many assumptions about provider compilation. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2fedaace/docs/src/reference/the-traversal.asciidoc ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2fedaace/docs/src/upgrade/release-3.2.x-incubating.asciidoc ---------------------------------------------------------------------- diff --cc docs/src/upgrade/release-3.2.x-incubating.asciidoc index 79b1ac3,7fe1d84..fbe31bd --- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc +++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc @@@ -32,31 -32,13 +32,40 @@@ Please see the link:https://github.com/ Upgrading for Users ~~~~~~~~~~~~~~~~~~~ +GremlinScriptEngine Metrics +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The `GremlinScriptEngine` has a number of new metrics about its cache size and script compilation times which should +be helpful in understanding usage problems. As `GremlinScriptEngine` instances are used in Gremlin Server these metrics +are naturally exposed as part of the standard link:http://tinkerpop.apache.org/docs/current/reference/#_metrics[metrics] +set. Note that metrics are captured for both sessionless requests as well as for each individual session that is opened. + +See: https://issues.apache.org/jira/browse/TINKERPOP-1644[TINKERPOP-1644] + +Gremlin Console Scripting +^^^^^^^^^^^^^^^^^^^^^^^^^ + +The `gremlin.sh` command has two flags, `-i` and `-e`, which are used to pass a script and arguments into the Gremlin +Console for execution. Those flags now allow for passing multiple scripts and related arguments to be supplied which +can yield greater flexibilty in automation tasks. + +[source,bash] +---- +$ bin/gremlin.sh -i y.groovy 1 2 3 -i x.groovy +$ bin/gremlin.sh -e y.groovy 1 2 3 -e x.groovy +---- + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1653[TINKERPOP-1653] + + simplePath(), cyclicPath(), and path() support by()-, from()-, to()-modulation + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + It is now possible to extract analyze sub-paths using `from()` and `to()` modulations with respective, path-based steps. + Likewise, `simplePath()` and `cyclicPath()` now support, along with `from()` and `to()`, `by()`-modulation so the cyclicity + is determined by projections of the path data. This extension is fully backwards compatible. + ++See: link:https://issues.apache.org/jira/browse/TINKERPOP-1387[TINKERPOP-1387] ++ Gremlin-Python Driver ^^^^^^^^^^^^^^^^^^^^^ Gremlin-Python now offers a more complete driver implementation that uses connection pooling and