You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2016/06/17 11:04:03 UTC
svn commit: r1748831 [2/2] -
/tinkerpop/site/docs/3.2.1-SNAPSHOT/reference/index.html
Modified: tinkerpop/site/docs/3.2.1-SNAPSHOT/reference/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.1-SNAPSHOT/reference/index.html?rev=1748831&r1=1748830&r2=1748831&view=diff
==============================================================================
--- tinkerpop/site/docs/3.2.1-SNAPSHOT/reference/index.html (original)
+++ tinkerpop/site/docs/3.2.1-SNAPSHOT/reference/index.html Fri Jun 17 11:04:03 2016
@@ -1006,7 +1006,7 @@ span.line-numbers { border-right: 1px so
<li><a href="#_configuring_2">Configuring</a></li>
<li>
<ul class="sectlevel3">
-<li><a href="#_security">Security</a></li>
+<li><a href="#_security_and_execution">Security and Execution</a></li>
<li><a href="#_serialization_2">Serialization</a></li>
<li><a href="#_metrics">Metrics</a></li>
</ul>
@@ -1068,6 +1068,7 @@ span.line-numbers { border-right: 1px so
<li><a href="#_cypher">Cypher</a></li>
<li><a href="#_multi_label">Multi-Label</a></li>
<li><a href="#_loading_with_bulkloadervertexprogram">Loading with BulkLoaderVertexProgram</a></li>
+<li><a href="#_high_availability_configuration">High Availability Configuration</a></li>
</ul>
</li>
<li><a href="#hadoop-gremlin">Hadoop-Gremlin</a></li>
@@ -1100,13 +1101,6 @@ span.line-numbers { border-right: 1px so
</ul>
</li>
<li><a href="#_a_command_line_example">A Command Line Example</a></li>
-<li><a href="#_hadoop_gremlin_for_graph_system_providers">Hadoop-Gremlin for Graph System Providers</a></li>
-<li>
-<ul class="sectlevel4">
-<li><a href="#_graphfilteraware_interface">GraphFilterAware Interface</a></li>
-<li><a href="#_persistresultgraphaware_interface">PersistResultGraphAware Interface</a></li>
-</ul>
-</li>
</ul>
</li>
</ul>
@@ -1977,103 +1971,103 @@ system providers for two purposes:</p>
gremlin> graph.features()
==>FEATURES
> GraphFeatures
->-- <span class="key">Transactions</span>: <span class="predefined-constant">false</span>
->-- <span class="key">Computer</span>: <span class="predefined-constant">true</span>
->-- <span class="key">Persistence</span>: <span class="predefined-constant">true</span>
>-- <span class="key">ThreadedTransactions</span>: <span class="predefined-constant">false</span>
+>-- <span class="key">Persistence</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">Transactions</span>: <span class="predefined-constant">false</span>
>-- <span class="key">ConcurrentAccess</span>: <span class="predefined-constant">false</span>
+>-- <span class="key">Computer</span>: <span class="predefined-constant">true</span>
> VariableFeatures
>-- <span class="key">Variables</span>: <span class="predefined-constant">true</span>
->-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">ByteValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">MixedListValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">SerializableValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">MixedListValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">UniformListValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">IntegerArrayValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">DoubleValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">BooleanArrayValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">DoubleArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">StringArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">FloatArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">ByteArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">UniformListValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">IntegerArrayValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">StringValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">BooleanArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">ByteArrayValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">FloatArrayValues</span>: <span class="predefined-constant">true</span>
> VertexFeatures
->-- <span class="key">AddVertices</span>: <span class="predefined-constant">true</span>
>-- <span class="key">MetaProperties</span>: <span class="predefined-constant">true</span>
->-- <span class="key">MultiProperties</span>: <span class="predefined-constant">true</span>
>-- <span class="key">RemoveVertices</span>: <span class="predefined-constant">true</span>
->-- <span class="key">CustomIds</span>: <span class="predefined-constant">false</span>
->-- <span class="key">StringIds</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">MultiProperties</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">AddVertices</span>: <span class="predefined-constant">true</span>
>-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span>
->-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
->-- <span class="key">AnyIds</span>: <span class="predefined-constant">true</span>
>-- <span class="key">AddProperty</span>: <span class="predefined-constant">true</span>
>-- <span class="key">UserSuppliedIds</span>: <span class="predefined-constant">true</span>
>-- <span class="key">RemoveProperty</span>: <span class="predefined-constant">true</span>
-> VertexPropertyFeatures
->-- <span class="key">CustomIds</span>: <span class="predefined-constant">false</span>
>-- <span class="key">StringIds</span>: <span class="predefined-constant">true</span>
->-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span>
>-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
>-- <span class="key">AnyIds</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">CustomIds</span>: <span class="predefined-constant">false</span>
+> VertexPropertyFeatures
+>-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span>
>-- <span class="key">AddProperty</span>: <span class="predefined-constant">true</span>
>-- <span class="key">UserSuppliedIds</span>: <span class="predefined-constant">true</span>
>-- <span class="key">RemoveProperty</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">StringIds</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">AnyIds</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">CustomIds</span>: <span class="predefined-constant">false</span>
>-- <span class="predefined-type">Properties</span>: <span class="predefined-constant">true</span>
->-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">ByteValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">MixedListValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">SerializableValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">MixedListValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">UniformListValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">IntegerArrayValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">DoubleValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">BooleanArrayValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">DoubleArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">StringArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">FloatArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">ByteArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">UniformListValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">IntegerArrayValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">StringValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">BooleanArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">ByteArrayValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">FloatArrayValues</span>: <span class="predefined-constant">true</span>
> EdgeFeatures
>-- <span class="key">AddEdges</span>: <span class="predefined-constant">true</span>
>-- <span class="key">RemoveEdges</span>: <span class="predefined-constant">true</span>
->-- <span class="key">CustomIds</span>: <span class="predefined-constant">false</span>
->-- <span class="key">StringIds</span>: <span class="predefined-constant">true</span>
>-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span>
->-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
->-- <span class="key">AnyIds</span>: <span class="predefined-constant">true</span>
>-- <span class="key">AddProperty</span>: <span class="predefined-constant">true</span>
>-- <span class="key">UserSuppliedIds</span>: <span class="predefined-constant">true</span>
>-- <span class="key">RemoveProperty</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">StringIds</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">AnyIds</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">CustomIds</span>: <span class="predefined-constant">false</span>
> EdgePropertyFeatures
>-- <span class="predefined-type">Properties</span>: <span class="predefined-constant">true</span>
->-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">ByteValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">MixedListValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">SerializableValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">MixedListValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">UniformListValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">IntegerArrayValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">DoubleValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">BooleanArrayValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">DoubleArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">StringArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">FloatArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">ByteArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">UniformListValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">IntegerArrayValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
>-- <span class="key">StringValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">BooleanArrayValues</span>: <span class="predefined-constant">true</span>
->-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">ByteArrayValues</span>: <span class="predefined-constant">true</span>
+>-- <span class="key">FloatArrayValues</span>: <span class="predefined-constant">true</span>
</code></pre>
</div>
</div>
@@ -2837,7 +2831,7 @@ demonstrated in the following example wh
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], standard]
gremlin> f = <span class="keyword">new</span> <span class="predefined-type">FileOutputStream</span>(<span class="string"><span class="delimiter">"</span><span class="content">vertex-1.json</span><span class="delimiter">"</span></span>)
-==>java.io.FileOutputStream<span class="error">@</span><span class="integer">1</span>b01c3e4
+==>java.io.FileOutputStream<span class="error">@</span><span class="float">3e0</span>cdd77
gremlin> graph.io(graphson()).writer().create().writeVertex(f, g.V(<span class="integer">1</span>).next(), BOTH)
==><span class="predefined-constant">null</span>
gremlin> f.close()
@@ -2910,9 +2904,9 @@ interpret the numeric values. In coerci
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], standard]
gremlin> f = <span class="keyword">new</span> <span class="predefined-type">FileOutputStream</span>(<span class="string"><span class="delimiter">"</span><span class="content">vertex-1.json</span><span class="delimiter">"</span></span>)
-==>java.io.FileOutputStream<span class="error">@</span><span class="integer">24</span>a01e59
+==>java.io.FileOutputStream<span class="error">@</span><span class="integer">24</span>afad6e
gremlin> mapper = graph.io(graphson()).mapper().embedTypes(<span class="predefined-constant">true</span>).create()
-==>org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">483</span>c156
+==>org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">4</span>a70a926
gremlin> graph.io(graphson()).writer().mapper(mapper).create().writeVertex(f, g.V(<span class="integer">1</span>).next(), BOTH)
==><span class="predefined-constant">null</span>
gremlin> f.close()
@@ -3251,7 +3245,7 @@ traversal strategies may not function pr
<p>A <code>GraphTraversal<S,E></code> is spawned from a <code>GraphTraversalSource</code>. It can also be spawned anonymously (i.e. empty)
via <code>__</code>. A graph traversal is composed of an ordered list of steps. All the steps provided by <code>GraphTraversal</code>
inherit from the more general forms diagrammed above. A list of all the steps (and their descriptions) are provided
-in the TinkerPop3 <a href="http://tinkerpop.apache.org/javadocs/3.0.2-incubating/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html">GraphTraversal JavaDoc</a>.
+in the TinkerPop3 <a href="http://tinkerpop.apache.org/javadocs/3.2.1-SNAPSHOT/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html">GraphTraversal JavaDoc</a>.
The following subsections will demonstrate the GraphTraversal steps using the <a href="#gremlin-console">Gremlin Console</a>.</p>
</div>
<div class="admonitionblock note">
@@ -3818,13 +3812,13 @@ gremlin> graph.io(graphml()).readGrap
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">808</span> <span class="key">edges</span>:<span class="integer">8049</span>], standard]
gremlin> clockWithResult(<span class="integer">1</span>){g.V().both().both().both().count().next()} <span class="comment">//</span><b>(1)</b>
-==><span class="float">9145.339211999999</span>
+==><span class="float">10769.871755999999</span>
==><span class="integer">126653966</span>
gremlin> clockWithResult(<span class="integer">1</span>){g.V().repeat(both()).times(<span class="integer">3</span>).count().next()} <span class="comment">//</span><b>(2)</b>
-==><span class="float">1052.724129</span>
+==><span class="float">1478.90222</span>
==><span class="integer">126653966</span>
gremlin> clockWithResult(<span class="integer">1</span>){g.V().both().barrier().both().barrier().both().barrier().count().next()} <span class="comment">//</span><b>(3)</b>
-==><span class="float">12.700916</span>
+==><span class="float">13.42652</span>
==><span class="integer">126653966</span></code></pre>
</div>
</div>
@@ -3859,7 +3853,7 @@ gremlin> graph.io(graphml()).readGrap
gremlin> g = graph.traversal().withStrategies(LazyBarrierStrategy.instance())
==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">808</span> <span class="key">edges</span>:<span class="integer">8049</span>], standard]
gremlin> clockWithResult(<span class="integer">1</span>){g.V().both().both().both().count().next()}
-==><span class="float">18.012145</span>
+==><span class="float">22.202023</span>
==><span class="integer">126653966</span>
gremlin> g.V().both().both().both().count().iterate().toString() <span class="comment">//</span><b>(1)</b>
==>[TinkerGraphStep(vertex,<span class="type">[]</span>), VertexStep(BOTH,vertex), NoOpBarrierStep(<span class="integer">10000</span>), VertexStep(BOTH,vertex), NoOpBarrierStep(<span class="integer">10000</span>), VertexStep(BOTH,edge), CountGlobalStep]</code></pre>
@@ -4080,8 +4074,8 @@ gremlin> g.V().hasLabel(<span class="
<div class="listingblock">
<div class="content">
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> g.V().coin(<span class="float">0.5</span>)
+==>v[<span class="integer">2</span>]
==>v[<span class="integer">4</span>]
-==>v[<span class="integer">6</span>]
gremlin> g.V().coin(<span class="float">0.0</span>)
gremlin> g.V().coin(<span class="float">1.0</span>)
==>v[<span class="integer">1</span>]
@@ -4433,7 +4427,7 @@ gremlin> g.V().group().by(label).by(c
</ol>
</div>
<div class="paragraph">
-<p>The three projection parameters available to <code>group()</code> via <code>by()</code> are:</p>
+<p>The two projection parameters available to <code>group()</code> via <code>by()</code> are:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
@@ -4443,9 +4437,6 @@ gremlin> g.V().group().by(label).by(c
<li>
<p>Value-projection: What feature of the group to store in the key-list?</p>
</li>
-<li>
-<p>Reduce-projection: What feature of the key-list to ultimately return?</p>
-</li>
</ol>
</div>
</div>
@@ -5413,15 +5404,15 @@ gremlin> g.V().hasLabel(<span class="
<div class="listingblock">
<div class="content">
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).order().by(shuffle)
-==>v[<span class="integer">1</span>]
-==>v[<span class="integer">2</span>]
==>v[<span class="integer">4</span>]
==>v[<span class="integer">6</span>]
-gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).order().by(shuffle)
==>v[<span class="integer">1</span>]
+==>v[<span class="integer">2</span>]
+gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).order().by(shuffle)
==>v[<span class="integer">6</span>]
-==>v[<span class="integer">4</span>]
-==>v[<span class="integer">2</span>]</code></pre>
+==>v[<span class="integer">1</span>]
+==>v[<span class="integer">2</span>]
+==>v[<span class="integer">4</span>]</code></pre>
</div>
</div>
<div class="paragraph">
@@ -5494,12 +5485,12 @@ The <code>pageRank()</code>-step is a <c
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> g = graph.traversal().withComputer()
==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], graphcomputer]
gremlin> g.V().pageRank().by(<span class="string"><span class="delimiter">'</span><span class="content">pageRank</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">pageRank</span><span class="delimiter">'</span></span>)
-==><span class="float">0.19250000000000003</span>
-==><span class="float">0.19250000000000003</span>
+==><span class="float">0.4018125</span>
==><span class="float">0.23181250000000003</span>
==><span class="float">0.15000000000000002</span>
==><span class="float">0.15000000000000002</span>
-==><span class="float">0.4018125</span>
+==><span class="float">0.19250000000000003</span>
+==><span class="float">0.19250000000000003</span>
gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
pageRank().
by(outE(<span class="string"><span class="delimiter">'</span><span class="content">knows</span><span class="delimiter">'</span></span>)).
@@ -5694,7 +5685,7 @@ gremlin> g.V().peerPressure().by(<spa
gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
peerPressure().by(<span class="string"><span class="delimiter">'</span><span class="content">cluster</span><span class="delimiter">'</span></span>).
group().by(<span class="string"><span class="delimiter">'</span><span class="content">cluster</span><span class="delimiter">'</span></span>).by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>)
-==>[<span class="integer">1</span>:[marko, josh, vadas], <span class="integer">6</span>:[peter]]</code></pre>
+==>[<span class="integer">1</span>:[marko, vadas, josh], <span class="integer">6</span>:[peter]]</code></pre>
</div>
</div>
</div>
@@ -5723,15 +5714,15 @@ profile results, but durations are not e
==>Traversal Metrics
Step Count Traversers <span class="predefined-type">Time</span> (ms) % Dur
=============================================================================================================
-TinkerGraphStep(vertex,<span class="type">[]</span>) <span class="integer">6</span> <span class="integer">6</span> <span class="float">0.073</span> <span class="float">3.97</span>
-VertexStep(OUT,[created],vertex) <span class="integer">4</span> <span class="integer">4</span> <span class="float">0.110</span> <span class="float">5.98</span>
-RepeatStep([VertexStep(BOTH,vertex), ProfileSte... <span class="integer">58</span> <span class="integer">40</span> <span class="float">0.863</span> <span class="float">46.74</span>
- VertexStep(BOTH,vertex) <span class="integer">92</span> <span class="integer">74</span> <span class="float">0.291</span>
- RepeatEndStep <span class="integer">58</span> <span class="integer">40</span> <span class="float">0.422</span>
-HasStep([~label.eq(person)]) <span class="integer">48</span> <span class="integer">30</span> <span class="float">0.149</span> <span class="float">8.07</span>
-PropertiesStep([age],value) <span class="integer">48</span> <span class="integer">30</span> <span class="float">0.145</span> <span class="float">7.90</span>
-SumGlobalStep <span class="integer">1</span> <span class="integer">1</span> <span class="float">0.504</span> <span class="float">27.33</span>
- >TOTAL - - <span class="float">1.846</span> -</code></pre>
+TinkerGraphStep(vertex,<span class="type">[]</span>) <span class="integer">6</span> <span class="integer">6</span> <span class="float">0.069</span> <span class="float">3.05</span>
+VertexStep(OUT,[created],vertex) <span class="integer">4</span> <span class="integer">4</span> <span class="float">0.114</span> <span class="float">5.01</span>
+RepeatStep([VertexStep(BOTH,vertex), ProfileSte... <span class="integer">58</span> <span class="integer">40</span> <span class="float">0.980</span> <span class="float">42.99</span>
+ VertexStep(BOTH,vertex) <span class="integer">92</span> <span class="integer">74</span> <span class="float">0.353</span>
+ RepeatEndStep <span class="integer">58</span> <span class="integer">40</span> <span class="float">0.417</span>
+HasStep([~label.eq(person)]) <span class="integer">48</span> <span class="integer">30</span> <span class="float">0.242</span> <span class="float">10.63</span>
+PropertiesStep([age],value) <span class="integer">48</span> <span class="integer">30</span> <span class="float">0.236</span> <span class="float">10.36</span>
+SumGlobalStep <span class="integer">1</span> <span class="integer">1</span> <span class="float">0.637</span> <span class="float">27.97</span>
+ >TOTAL - - <span class="float">2.280</span> -</code></pre>
</div>
</div>
<div class="paragraph">
@@ -5779,9 +5770,9 @@ gremlin> metrics = t.getSideEffects()
==>Traversal Metrics
Step Count Traversers <span class="predefined-type">Time</span> (ms) % Dur
=============================================================================================================
-TinkerGraphStep(vertex,<span class="type">[]</span>) <span class="integer">6</span> <span class="integer">6</span> <span class="float">0.077</span> <span class="float">146.92</span>
-VertexStep(OUT,[created],vertex) <span class="integer">4</span> <span class="integer">4</span> -<span class="float">0.024</span> -<span class="float">46.92</span>
- >TOTAL - - <span class="float">0.052</span> -</code></pre>
+TinkerGraphStep(vertex,<span class="type">[]</span>) <span class="integer">6</span> <span class="integer">6</span> <span class="float">0.067</span> <span class="float">163.36</span>
+VertexStep(OUT,[created],vertex) <span class="integer">4</span> <span class="integer">4</span> -<span class="float">0.026</span> -<span class="float">63.36</span>
+ >TOTAL - - <span class="float">0.041</span> -</code></pre>
</div>
</div>
<div class="paragraph">
@@ -6202,14 +6193,14 @@ value is accessed (<code>sack()</code>).
==><span class="float">1.0</span>
==><span class="float">1.0</span>
gremlin> rand = <span class="keyword">new</span> <span class="predefined-type">Random</span>()
-==>java.util.Random<span class="error">@</span><span class="float">3638120f</span>
+==>java.util.Random<span class="error">@</span><span class="float">3f</span><span class="float">13720f</span>
gremlin> g.withSack {rand.nextFloat()}.V().sack()
-==><span class="float">0.7756301</span>
-==><span class="float">0.9107551</span>
-==><span class="float">0.27616805</span>
-==><span class="float">0.4443376</span>
-==><span class="float">0.21282184</span>
-==><span class="float">0.534177</span></code></pre>
+==><span class="float">0.6565642</span>
+==><span class="float">0.4764393</span>
+==><span class="float">0.40086716</span>
+==><span class="float">0.7357775</span>
+==><span class="float">0.53259206</span>
+==><span class="float">0.5677499</span></code></pre>
</div>
</div>
<div class="paragraph">
@@ -6320,7 +6311,7 @@ gremlin> g.withBulk(<span class="pred
<div class="listingblock">
<div class="content">
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> g.V().outE().sample(<span class="integer">1</span>).values(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>)
-==><span class="float">0.4</span>
+==><span class="float">1.0</span>
gremlin> g.V().outE().sample(<span class="integer">1</span>).by(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>)
==><span class="float">1.0</span>
gremlin> g.V().outE().sample(<span class="integer">2</span>).by(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>)
@@ -6340,15 +6331,15 @@ the traverser never splits and continues
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> g.V(<span class="integer">1</span>).repeat(local(
bothE().sample(<span class="integer">1</span>).by(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>).otherV()
)).times(<span class="integer">5</span>)
-==>v[<span class="integer">2</span>]
+==>v[<span class="integer">4</span>]
gremlin> g.V(<span class="integer">1</span>).repeat(local(
bothE().sample(<span class="integer">1</span>).by(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>).otherV()
)).times(<span class="integer">5</span>).path()
-==>[v[<span class="integer">1</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">2</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">1</span>], e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>], v[<span class="integer">4</span>], e[<span class="integer">11</span>][<span class="integer">4</span>-created-><span class="integer">3</span>], v[<span class="integer">3</span>], e[<span class="integer">11</span>][<span class="integer">4</span>-created-><span class="integer">3</span>], v[<span class="integer">4</span>]]
+==>[v[<span class="integer">1</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">2</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">1</span>], e[<span class="integer">9</span>][<span class="integer">1</span>-created-><span class="integer">3</span>], v[<span class="integer">3</span>], e[<span class="integer">12</span>][<span class="integer">6</span>-created-><span class="integer">3</span>], v[<span class="integer">6</span>], e[<span class="integer">12</span>][<span class="integer">6</span>-created-><span class="integer">3</span>], v[<span class="integer">3</span>]]
gremlin> g.V(<span class="integer">1</span>).repeat(local(
bothE().sample(<span class="integer">1</span>).by(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>).otherV()
)).times(<span class="integer">10</span>).path()
-==>[v[<span class="integer">1</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">2</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">1</span>], e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>], v[<span class="integer">4</span>], e[<span class="integer">10</span>][<span class="integer">4</span>-created-><span class="integer">5</span>], v[<span class="integer">5</span>], e[<span class="integer">10</span>][<span class="integer">4</span>-created-><span class="integer">5</span>], v[<span class="integer">4</span>], e[<span class="integer">10</span>][<span class="integer">4</span>-created-><span class="integer">5</span>], v[<span class="integer">5</span>], e[<span class="integer">10</span>][<span class="integer">4</span>-created-><span clas
s="integer">5</span>], v[<span class="integer">4</span>], e[<span class="integer">11</span>][<span class="integer">4</span>-created-><span class="integer">3</span>], v[<span class="integer">3</span>], e[<span class="integer">9</span>][<span class="integer">1</span>-created-><span class="integer">3</span>], v[<span class="integer">1</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">2</span>]]</code></pre>
+==>[v[<span class="integer">1</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">2</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">1</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">2</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">1</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">2</span>], e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>], v[<span class="integer">1</span>], e[<span class="integer">9</span>][<span class="integer">1</span>-created-><span class="integer
">3</span>], v[<span class="integer">3</span>], e[<span class="integer">9</span>][<span class="integer">1</span>-created-><span class="integer">3</span>], v[<span class="integer">1</span>], e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>], v[<span class="integer">4</span>], e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>], v[<span class="integer">1</span>]]</code></pre>
</div>
</div>
</div>
@@ -6859,16 +6850,16 @@ that can be used to time execution of a
==>v[<span class="integer">5</span>]=<span class="integer">1136688</span>
==>v[<span class="integer">6</span>]=<span class="integer">1136688</span>
gremlin> clock(<span class="integer">1</span>) {g.V().repeat(both().groupCount(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>)).times(<span class="integer">16</span>).cap(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>).order(local).by(values,decr).next()}
-==><span class="float">2.716917</span>
+==><span class="float">2.3746709999999998</span>
gremlin> g.V().repeat(timeLimit(<span class="integer">2</span>).both().groupCount(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>)).times(<span class="integer">16</span>).cap(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>).order(local).by(values,decr).next()
-==>v[<span class="integer">3</span>]=<span class="integer">2208807</span>
-==>v[<span class="integer">4</span>]=<span class="integer">2208777</span>
-==>v[<span class="integer">1</span>]=<span class="integer">2208172</span>
-==>v[<span class="integer">2</span>]=<span class="integer">915081</span>
-==>v[<span class="integer">5</span>]=<span class="integer">914712</span>
-==>v[<span class="integer">6</span>]=<span class="integer">914703</span>
+==>v[<span class="integer">3</span>]=<span class="integer">1562084</span>
+==>v[<span class="integer">1</span>]=<span class="integer">1561475</span>
+==>v[<span class="integer">4</span>]=<span class="integer">1561097</span>
+==>v[<span class="integer">5</span>]=<span class="integer">647096</span>
+==>v[<span class="integer">2</span>]=<span class="integer">646865</span>
+==>v[<span class="integer">6</span>]=<span class="integer">646487</span>
gremlin> clock(<span class="integer">1</span>) {g.V().repeat(timeLimit(<span class="integer">2</span>).both().groupCount(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>)).times(<span class="integer">16</span>).cap(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>).order(local).by(values,decr).next()}
-==><span class="float">1.9619689999999999</span></code></pre>
+==><span class="float">2.935535</span></code></pre>
</div>
</div>
<div class="paragraph">
@@ -7076,20 +7067,20 @@ gremlin> g.V().hasLabel(<span class="
==>[<span class="key">name</span>:[matthias], <span class="key">label</span>:person, <span class="key">id</span>:<span class="integer">8</span>]
==>[<span class="key">name</span>:[daniel], <span class="key">label</span>:person, <span class="key">id</span>:<span class="integer">9</span>]
gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).properties(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).valueMap(<span class="predefined-constant">true</span>)
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">1997</span>, <span class="key">value</span>:san diego, <span class="key">endTime</span>:<span class="integer">2001</span>, <span class="key">id</span>:<span class="integer">6</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2001</span>, <span class="key">value</span>:santa cruz, <span class="key">endTime</span>:<span class="integer">2004</span>, <span class="key">id</span>:<span class="integer">7</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2004</span>, <span class="key">value</span>:brussels, <span class="key">endTime</span>:<span class="integer">2005</span>, <span class="key">id</span>:<span class="integer">8</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2005</span>, <span class="key">value</span>:santa fe, <span class="key">id</span>:<span class="integer">9</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">1990</span>, <span class="key">value</span>:centreville, <span class="key">endTime</span>:<span class="integer">2000</span>, <span class="key">id</span>:<span class="integer">10</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2000</span>, <span class="key">value</span>:dulles, <span class="key">endTime</span>:<span class="integer">2006</span>, <span class="key">id</span>:<span class="integer">11</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2006</span>, <span class="key">value</span>:purcellville, <span class="key">id</span>:<span class="integer">12</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2004</span>, <span class="key">value</span>:bremen, <span class="key">endTime</span>:<span class="integer">2007</span>, <span class="key">id</span>:<span class="integer">13</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2007</span>, <span class="key">value</span>:baltimore, <span class="key">endTime</span>:<span class="integer">2011</span>, <span class="key">id</span>:<span class="integer">14</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2011</span>, <span class="key">value</span>:oakland, <span class="key">endTime</span>:<span class="integer">2014</span>, <span class="key">id</span>:<span class="integer">15</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2014</span>, <span class="key">value</span>:seattle, <span class="key">id</span>:<span class="integer">16</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">1982</span>, <span class="key">value</span>:spremberg, <span class="key">endTime</span>:<span class="integer">2005</span>, <span class="key">id</span>:<span class="integer">17</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2005</span>, <span class="key">value</span>:kaiserslautern, <span class="key">endTime</span>:<span class="integer">2009</span>, <span class="key">id</span>:<span class="integer">18</span>]
-==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2009</span>, <span class="key">value</span>:aachen, <span class="key">id</span>:<span class="integer">19</span>]</code></pre>
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">1997</span>, <span class="key">endTime</span>:<span class="integer">2001</span>, <span class="key">id</span>:<span class="integer">6</span>, <span class="key">value</span>:san diego]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2001</span>, <span class="key">endTime</span>:<span class="integer">2004</span>, <span class="key">id</span>:<span class="integer">7</span>, <span class="key">value</span>:santa cruz]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2004</span>, <span class="key">endTime</span>:<span class="integer">2005</span>, <span class="key">id</span>:<span class="integer">8</span>, <span class="key">value</span>:brussels]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2005</span>, <span class="key">id</span>:<span class="integer">9</span>, <span class="key">value</span>:santa fe]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">1990</span>, <span class="key">endTime</span>:<span class="integer">2000</span>, <span class="key">id</span>:<span class="integer">10</span>, <span class="key">value</span>:centreville]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2000</span>, <span class="key">endTime</span>:<span class="integer">2006</span>, <span class="key">id</span>:<span class="integer">11</span>, <span class="key">value</span>:dulles]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2006</span>, <span class="key">id</span>:<span class="integer">12</span>, <span class="key">value</span>:purcellville]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2004</span>, <span class="key">endTime</span>:<span class="integer">2007</span>, <span class="key">id</span>:<span class="integer">13</span>, <span class="key">value</span>:bremen]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2007</span>, <span class="key">endTime</span>:<span class="integer">2011</span>, <span class="key">id</span>:<span class="integer">14</span>, <span class="key">value</span>:baltimore]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2011</span>, <span class="key">endTime</span>:<span class="integer">2014</span>, <span class="key">id</span>:<span class="integer">15</span>, <span class="key">value</span>:oakland]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2014</span>, <span class="key">id</span>:<span class="integer">16</span>, <span class="key">value</span>:seattle]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">1982</span>, <span class="key">endTime</span>:<span class="integer">2005</span>, <span class="key">id</span>:<span class="integer">17</span>, <span class="key">value</span>:spremberg]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2005</span>, <span class="key">endTime</span>:<span class="integer">2009</span>, <span class="key">id</span>:<span class="integer">18</span>, <span class="key">value</span>:kaiserslautern]
+==>[<span class="key">key</span>:location, <span class="key">startTime</span>:<span class="integer">2009</span>, <span class="key">id</span>:<span class="integer">19</span>, <span class="key">value</span>:aachen]</code></pre>
</div>
</div>
</div>
@@ -8077,7 +8068,7 @@ memory manipulations).</p>
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get()
==>result[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">0</span>],memory[<span class="key">size</span>:<span class="integer">0</span>]]
gremlin> result.memory().runtime
-==><span class="integer">105</span>
+==><span class="integer">119</span>
gremlin> g = result.graph().traversal()
==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">0</span>], standard]
gremlin> g.V().valueMap()
@@ -8443,7 +8434,7 @@ methods of a <code>VertexProgram</code>,
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get()
==>result[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">0</span>],memory[<span class="key">size</span>:<span class="integer">0</span>]]
gremlin> result.memory().runtime
-==><span class="integer">29</span>
+==><span class="integer">30</span>
gremlin> g = result.graph().traversal()
==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">0</span>], standard]
gremlin> g.V().valueMap()
@@ -8463,17 +8454,17 @@ gremlin> g.V().valueMap()
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> g = graph.traversal().withComputer()
==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], graphcomputer]
gremlin> g.V().pageRank().valueMap()
+==>[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.19250000000000003</span>], <span class="key">name</span>:[josh], <span class="key">age</span>:[<span class="integer">32</span>]]
+==>[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.19250000000000003</span>], <span class="key">name</span>:[vadas], <span class="key">age</span>:[<span class="integer">27</span>]]
==>[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.15000000000000002</span>], <span class="key">name</span>:[marko], <span class="key">age</span>:[<span class="integer">29</span>]]
==>[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.4018125</span>], <span class="key">name</span>:[lop], <span class="key">lang</span>:[java]]
-==>[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.19250000000000003</span>], <span class="key">name</span>:[vadas], <span class="key">age</span>:[<span class="integer">27</span>]]
-==>[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.19250000000000003</span>], <span class="key">name</span>:[josh], <span class="key">age</span>:[<span class="integer">32</span>]]
==>[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.23181250000000003</span>], <span class="key">name</span>:[ripple], <span class="key">lang</span>:[java]]
==>[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.15000000000000002</span>], <span class="key">name</span>:[peter], <span class="key">age</span>:[<span class="integer">35</span>]]
gremlin> g.V().pageRank().by(<span class="string"><span class="delimiter">'</span><span class="content">pageRank</span><span class="delimiter">'</span></span>).times(<span class="integer">5</span>).order().by(<span class="string"><span class="delimiter">'</span><span class="content">pageRank</span><span class="delimiter">'</span></span>).valueMap()
==>[<span class="key">pageRank</span>:[<span class="float">0.15000000000000002</span>], <span class="key">name</span>:[marko], <span class="key">age</span>:[<span class="integer">29</span>]]
==>[<span class="key">pageRank</span>:[<span class="float">0.15000000000000002</span>], <span class="key">name</span>:[peter], <span class="key">age</span>:[<span class="integer">35</span>]]
-==>[<span class="key">pageRank</span>:[<span class="float">0.19250000000000003</span>], <span class="key">name</span>:[josh], <span class="key">age</span>:[<span class="integer">32</span>]]
==>[<span class="key">pageRank</span>:[<span class="float">0.19250000000000003</span>], <span class="key">name</span>:[vadas], <span class="key">age</span>:[<span class="integer">27</span>]]
+==>[<span class="key">pageRank</span>:[<span class="float">0.19250000000000003</span>], <span class="key">name</span>:[josh], <span class="key">age</span>:[<span class="integer">32</span>]]
==>[<span class="key">pageRank</span>:[<span class="float">0.23181250000000003</span>], <span class="key">name</span>:[ripple], <span class="key">lang</span>:[java]]
==>[<span class="key">pageRank</span>:[<span class="float">0.4018125</span>], <span class="key">name</span>:[lop], <span class="key">lang</span>:[java]]</code></pre>
</div>
@@ -8521,18 +8512,18 @@ same cluster. The algorithm proceeds in
==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], graphcomputer]
gremlin> g.V().peerPressure().by(<span class="string"><span class="delimiter">'</span><span class="content">cluster</span><span class="delimiter">'</span></span>).valueMap()
==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[marko], <span class="key">age</span>:[<span class="integer">29</span>]]
-==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[vadas], <span class="key">age</span>:[<span class="integer">27</span>]]
==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[lop], <span class="key">lang</span>:[java]]
==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[josh], <span class="key">age</span>:[<span class="integer">32</span>]]
==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[ripple], <span class="key">lang</span>:[java]]
+==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[vadas], <span class="key">age</span>:[<span class="integer">27</span>]]
==>[<span class="key">cluster</span>:[<span class="integer">6</span>], <span class="key">name</span>:[peter], <span class="key">age</span>:[<span class="integer">35</span>]]
gremlin> g.V().peerPressure().by(outE(<span class="string"><span class="delimiter">'</span><span class="content">knows</span><span class="delimiter">'</span></span>)).by(<span class="string"><span class="delimiter">'</span><span class="content">cluster</span><span class="delimiter">'</span></span>).valueMap()
+==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[vadas], <span class="key">age</span>:[<span class="integer">27</span>]]
==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[marko], <span class="key">age</span>:[<span class="integer">29</span>]]
==>[<span class="key">cluster</span>:[<span class="integer">3</span>], <span class="key">name</span>:[lop], <span class="key">lang</span>:[java]]
-==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[vadas], <span class="key">age</span>:[<span class="integer">27</span>]]
+==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[josh], <span class="key">age</span>:[<span class="integer">32</span>]]
==>[<span class="key">cluster</span>:[<span class="integer">5</span>], <span class="key">name</span>:[ripple], <span class="key">lang</span>:[java]]
-==>[<span class="key">cluster</span>:[<span class="integer">6</span>], <span class="key">name</span>:[peter], <span class="key">age</span>:[<span class="integer">35</span>]]
-==>[<span class="key">cluster</span>:[<span class="integer">1</span>], <span class="key">name</span>:[josh], <span class="key">age</span>:[<span class="integer">32</span>]]</code></pre>
+==>[<span class="key">cluster</span>:[<span class="integer">6</span>], <span class="key">name</span>:[peter], <span class="key">age</span>:[<span class="integer">35</span>]]</code></pre>
</div>
</div>
</div>
@@ -8558,7 +8549,7 @@ from one TinkerGraph to another:</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> writeGraphConf = <span class="keyword">new</span> BaseConfiguration()
-==>org.apache.commons.configuration.BaseConfiguration<span class="error">@</span><span class="integer">6</span>b1321b7
+==>org.apache.commons.configuration.BaseConfiguration<span class="error">@</span><span class="integer">6</span>ac45c0c
gremlin> writeGraphConf.setProperty(<span class="string"><span class="delimiter">"</span><span class="content">gremlin.graph</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph</span><span class="delimiter">"</span></span>)
==><span class="predefined-constant">null</span>
gremlin> writeGraphConf.setProperty(<span class="string"><span class="delimiter">"</span><span class="content">gremlin.tinkergraph.graphFormat</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">gryo</span><span class="delimiter">"</span></span>)
@@ -8767,7 +8758,7 @@ gremlin> result.memory().a
gremlin> result.memory().iteration
==><span class="integer">1</span>
gremlin> result.memory().runtime
-==><span class="integer">4</span></code></pre>
+==><span class="integer">12</span></code></pre>
</div>
</div>
<div class="sect3">
@@ -9757,7 +9748,7 @@ for more information on that topic.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> :remote connect tinkerpop.server conf/remote.yaml session
-==>Configured localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>-[<span class="integer">1</span>b7caa35-<span class="float">5d</span><span class="float">2d</span>-<span class="integer">42</span>a8-bada-bf3c831cb952]
+==>Configured localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>-[c19ad259-<span class="float">2f</span><span class="octal">05</span>-<span class="integer">43</span>c6-ae13-<span class="float">5f</span><span class="float">6447d</span><span class="float">24e32</span>]
gremlin> :> x = <span class="integer">1</span>
==><span class="integer">1</span>
gremlin> :> y = <span class="integer">2</span>
@@ -9768,7 +9759,10 @@ gremlin> :> x + y
</div>
<div class="paragraph">
<p>With the above command a session gets created with a random UUID for a session identifier. It is also possible to
-assign a custom session identifier by adding it as the last argument to <code>:remote</code> command above.</p>
+assign a custom session identifier by adding it as the last argument to <code>:remote</code> command above. There is also the
+option to replace "session" with "session-managed" to create a session that will auto-manage transactions (i.e. each
+request will occur within the bounds of a transaction). In this way, the state of bound variables between requests are
+maintained, but the need to manually managed the transactional scope of the graph is no longer required.</p>
</div>
</div>
<div class="sect3">
@@ -9781,9 +9775,9 @@ work with a remote connection to the ser
<div class="listingblock">
<div class="content">
<pre class="CodeRay"><code class="groovy language-groovy">gremlin> :remote connect tinkerpop.server conf/remote.yaml session
-==>Configured localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>-[d6f8c943-dc68-<span class="float">47d</span>c-baef-<span class="float">0d</span><span class="float">786f</span><span class="integer">918598</span>]
+==>Configured localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>-[a8e4e38b-<span class="integer">5</span>b85-<span class="integer">4</span>af8-<span class="integer">8</span>cf2-c6a6a977ae0b]
gremlin> :remote console
-==>All scripts will now be sent to Gremlin Server - [localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>]-[d6f8c943-dc68-<span class="float">47d</span>c-baef-<span class="float">0d</span><span class="float">786f</span><span class="integer">918598</span>] - type <span class="string"><span class="delimiter">'</span><span class="content">:remote console</span><span class="delimiter">'</span></span> to <span class="keyword">return</span> to local mode
+==>All scripts will now be sent to Gremlin Server - [localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>]-[a8e4e38b-<span class="integer">5</span>b85-<span class="integer">4</span>af8-<span class="integer">8</span>cf2-c6a6a977ae0b] - type <span class="string"><span class="delimiter">'</span><span class="content">:remote console</span><span class="delimiter">'</span></span> to <span class="keyword">return</span> to local mode
gremlin> x = <span class="integer">1</span>
==><span class="integer">1</span>
gremlin> y = <span class="integer">2</span>
@@ -9791,7 +9785,7 @@ gremlin> y = <span class="integer">2<
gremlin> x + y
==><span class="integer">3</span>
gremlin> :remote console
-==>All scripts will now be evaluated locally - type <span class="string"><span class="delimiter">'</span><span class="content">:remote console</span><span class="delimiter">'</span></span> to <span class="keyword">return</span> to remote mode <span class="keyword">for</span> Gremlin Server - [localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>]-[d6f8c943-dc68-<span class="float">47d</span>c-baef-<span class="float">0d</span><span class="float">786f</span><span class="integer">918598</span>]</code></pre>
+==>All scripts will now be evaluated locally - type <span class="string"><span class="delimiter">'</span><span class="content">:remote console</span><span class="delimiter">'</span></span> to <span class="keyword">return</span> to remote mode <span class="keyword">for</span> Gremlin Server - [localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>]-[a8e4e38b-<span class="integer">5</span>b85-<span class="integer">4</span>af8-<span class="integer">8</span>cf2-c6a6a977ae0b]</code></pre>
</div>
</div>
<div class="paragraph">
@@ -10335,13 +10329,13 @@ information on those classes and their u
gremlin> g = graph.traversal()
==>graphtraversalsource[remotegraph[DriverServerConnection-localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span> [graph=graph]], standard]
gremlin> g.V().valueMap(<span class="predefined-constant">true</span>)
-==>[<span class="key">label</span>:person, <span class="key">id</span>:<span class="integer">1</span>, <span class="key">name</span>:[marko], <span class="key">age</span>:[<span class="integer">29</span>]]
-==>[<span class="key">label</span>:person, <span class="key">id</span>:<span class="integer">2</span>, <span class="key">name</span>:[vadas], <span class="key">age</span>:[<span class="integer">27</span>]]
-==>[<span class="key">label</span>:software, <span class="key">id</span>:<span class="integer">3</span>, <span class="key">name</span>:[lop], <span class="key">lang</span>:[java]]
-==>[<span class="key">label</span>:person, <span class="key">id</span>:<span class="integer">4</span>, <span class="key">name</span>:[josh], <span class="key">age</span>:[<span class="integer">32</span>]]
-==>[<span class="key">label</span>:software, <span class="key">id</span>:<span class="integer">5</span>, <span class="key">name</span>:[ripple], <span class="key">lang</span>:[java]]
-==>[<span class="key">label</span>:person, <span class="key">id</span>:<span class="integer">6</span>, <span class="key">name</span>:[peter], <span class="key">age</span>:[<span class="integer">35</span>]]
-==>[<span class="key">label</span>:vertex, <span class="key">id</span>:<span class="integer">13</span>, <span class="key">name</span>:[matthias]]</code></pre>
+==>[<span class="key">label</span>:person, <span class="key">name</span>:[marko], <span class="key">id</span>:<span class="integer">1</span>, <span class="key">age</span>:[<span class="integer">29</span>]]
+==>[<span class="key">label</span>:person, <span class="key">name</span>:[vadas], <span class="key">id</span>:<span class="integer">2</span>, <span class="key">age</span>:[<span class="integer">27</span>]]
+==>[<span class="key">label</span>:software, <span class="key">name</span>:[lop], <span class="key">id</span>:<span class="integer">3</span>, <span class="key">lang</span>:[java]]
+==>[<span class="key">label</span>:person, <span class="key">name</span>:[josh], <span class="key">id</span>:<span class="integer">4</span>, <span class="key">age</span>:[<span class="integer">32</span>]]
+==>[<span class="key">label</span>:software, <span class="key">name</span>:[ripple], <span class="key">id</span>:<span class="integer">5</span>, <span class="key">lang</span>:[java]]
+==>[<span class="key">label</span>:person, <span class="key">name</span>:[peter], <span class="key">id</span>:<span class="integer">6</span>, <span class="key">age</span>:[<span class="integer">35</span>]]
+==>[<span class="key">label</span>:vertex, <span class="key">name</span>:[matthias], <span class="key">id</span>:<span class="integer">13</span>]</code></pre>
</div>
</div>
<div class="paragraph">
@@ -10357,13 +10351,13 @@ gremlin> graph = RemoteGraph.open(Dri
gremlin> g = graph.traversal()
==>graphtraversalsource[remotegraph[DriverServerConnection-localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span> [graph=graph]], standard]
gremlin> g.V().valueMap(<span class="predefined-constant">true</span>)
-==>[<span class="key">label</span>:person, <span class="key">id</span>:<span class="integer">1</span>, <span class="key">name</span>:[marko], <span class="key">age</span>:[<span class="integer">29</span>]]
-==>[<span class="key">label</span>:person, <span class="key">id</span>:<span class="integer">2</span>, <span class="key">name</span>:[vadas], <span class="key">age</span>:[<span class="integer">27</span>]]
-==>[<span class="key">label</span>:software, <span class="key">id</span>:<span class="integer">3</span>, <span class="key">name</span>:[lop], <span class="key">lang</span>:[java]]
-==>[<span class="key">label</span>:person, <span class="key">id</span>:<span class="integer">4</span>, <span class="key">name</span>:[josh], <span class="key">age</span>:[<span class="integer">32</span>]]
-==>[<span class="key">label</span>:software, <span class="key">id</span>:<span class="integer">5</span>, <span class="key">name</span>:[ripple], <span class="key">lang</span>:[java]]
-==>[<span class="key">label</span>:person, <span class="key">id</span>:<span class="integer">6</span>, <span class="key">name</span>:[peter], <span class="key">age</span>:[<span class="integer">35</span>]]
-==>[<span class="key">label</span>:vertex, <span class="key">id</span>:<span class="integer">13</span>, <span class="key">name</span>:[matthias]]
+==>[<span class="key">label</span>:person, <span class="key">name</span>:[marko], <span class="key">id</span>:<span class="integer">1</span>, <span class="key">age</span>:[<span class="integer">29</span>]]
+==>[<span class="key">label</span>:person, <span class="key">name</span>:[vadas], <span class="key">id</span>:<span class="integer">2</span>, <span class="key">age</span>:[<span class="integer">27</span>]]
+==>[<span class="key">label</span>:software, <span class="key">name</span>:[lop], <span class="key">id</span>:<span class="integer">3</span>, <span class="key">lang</span>:[java]]
+==>[<span class="key">label</span>:person, <span class="key">name</span>:[josh], <span class="key">id</span>:<span class="integer">4</span>, <span class="key">age</span>:[<span class="integer">32</span>]]
+==>[<span class="key">label</span>:software, <span class="key">name</span>:[ripple], <span class="key">id</span>:<span class="integer">5</span>, <span class="key">lang</span>:[java]]
+==>[<span class="key">label</span>:person, <span class="key">name</span>:[peter], <span class="key">id</span>:<span class="integer">6</span>, <span class="key">age</span>:[<span class="integer">35</span>]]
+==>[<span class="key">label</span>:vertex, <span class="key">name</span>:[matthias], <span class="key">id</span>:<span class="integer">13</span>]
gremlin> graph.close()
==><span class="predefined-constant">null</span>
gremlin> cluster.close()
@@ -10728,7 +10722,7 @@ before starting the server.
</table>
</div>
<div class="sect3">
-<h4 id="_security">Security</h4>
+<h4 id="_security_and_execution">Security and Execution</h4>
<div class="paragraph">
<p><span class="image" style="float: right"><img src="../images/gremlin-server-secure.png" alt="gremlin-server-secure" width="175"></span> Gremlin Server provides for several features that aid in the
security of the graphs that it exposes. It has built in SSL support and a pluggable authentication framework using
@@ -10874,7 +10868,7 @@ gremlin> credentials.createUser(<span
gremlin> credentials.createUser(<span class="string"><span class="delimiter">"</span><span class="content">marko</span><span class="delimiter">"</span></span>,<span class="string"><span class="delimiter">"</span><span class="content">rainbow-dash</span><span class="delimiter">"</span></span>)
==>v[<span class="integer">6</span>]
gremlin> credentials.findUser(<span class="string"><span class="delimiter">"</span><span class="content">marko</span><span class="delimiter">"</span></span>).properties()
-==>vp[password-><span class="error">$</span><span class="integer">2</span>a<span class="error">$</span><span class="integer">10</span><span class="error">$</span>NEssUhk0fsYVN]
+==>vp[password-><span class="error">$</span><span class="integer">2</span>a<span class="error">$</span><span class="integer">10</span><span class="error">$</span>TcKoBCfe2NLvj]
==>vp[username->marko]
gremlin> credentials.countUsers()
==><span class="integer">3</span>
@@ -10960,6 +10954,12 @@ Execution timed out after <span class="i
</div></div></td>
</tr>
<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>ConfigurationCustomizerProvider</code></p></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>Allows configuration of the the Groovy <code>CompilerConfiguration</code> object by taking a <code>Map</code> of key/value pairs where the "key" is a property to set on the <code>CompilerConfiguration</code>.</p>
+</div></div></td>
+</tr>
+<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>ThreadInterruptCustomizerProvider</code></p></td>
<td class="tableblock halign-left valign-top"><div><div class="paragraph">
<p>Injects checks for thread interruption, thus allowing the thread to potentially respect calls to <code>Thread.interrupt()</code></p>
@@ -12144,9 +12144,9 @@ Environment
* <span class="key">Groovy</span>: <span class="float">2.4</span><span class="float">.6</span>
* <span class="key">JVM</span>: Java HotSpot(TM) <span class="integer">64</span>-Bit Server VM (<span class="float">25.91</span>-b14, Oracle Corporation)
* <span class="key">JRE</span>: <span class="float">1.8</span><span class="float">.0</span>_91
- * Total <span class="key">Memory</span>: <span class="integer">1602</span> MB
+ * Total <span class="key">Memory</span>: <span class="integer">1562</span> MB
* Maximum <span class="key">Memory</span>: <span class="float">3566.5</span> MB
-* <span class="key">OS</span>: Linux (<span class="float">3.13</span><span class="float">.0</span>-<span class="integer">86</span>-generic, amd64)
+* <span class="key">OS</span>: Linux (<span class="float">3.13</span><span class="float">.0</span>-<span class="integer">88</span>-generic, amd64)
Options
=======
@@ -12155,17 +12155,17 @@ Options
user system cpu real
-sugar <span class="integer">17136</span> <span class="integer">0</span> <span class="integer">17136</span> <span class="integer">17156</span>
-nosugar <span class="integer">10006</span> <span class="integer">0</span> <span class="integer">10006</span> <span class="integer">10023</span>
+sugar <span class="integer">13979</span> <span class="integer">0</span> <span class="integer">13979</span> <span class="integer">13994</span>
+nosugar <span class="integer">8791</span> <span class="integer">78</span> <span class="integer">8869</span> <span class="integer">8877</span>
==><span class="predefined-constant">null</span>
gremlin> profile { g.V().iterate() }.prettyPrint()
<span class="key">Flat</span>:
% cumulative self self total self total self total
time seconds seconds calls ms/call ms/call min ms min ms max ms max ms name
-<span class="float">47.4</span> <span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span> <span class="float">0.49</span> <span class="float">1.03</span> <span class="float">0.49</span> <span class="float">1.03</span> <span class="float">0.49</span> <span class="float">1.03</span> groovysh_evaluate<span class="error">$</span>_run_closure1.doCall
-<span class="float">42.7</span> <span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span> <span class="float">0.44</span> <span class="float">0.44</span> <span class="float">0.44</span> <span class="float">0.44</span> <span class="float">0.44</span> <span class="float">0.44</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.iterate
- <span class="float">9.7</span> <span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span> <span class="float">0.10</span> <span class="float">0.10</span> <span class="float">0.10</span> <span class="float">0.10</span> <span class="float">0.10</span> <span class="float">0.10</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.V
+<span class="float">51.8</span> <span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span> <span class="float">0.52</span> <span class="float">1.01</span> <span class="float">0.52</span> <span class="float">1.01</span> <span class="float">0.52</span> <span class="float">1.01</span> groovysh_evaluate<span class="error">$</span>_run_closure1.doCall
+<span class="float">36.0</span> <span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span> <span class="float">0.36</span> <span class="float">0.36</span> <span class="float">0.36</span> <span class="float">0.36</span> <span class="float">0.36</span> <span class="float">0.36</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.iterate
+<span class="float">12.1</span> <span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span> <span class="float">0.12</span> <span class="float">0.12</span> <span class="float">0.12</span> <span class="float">0.12</span> <span class="float">0.12</span> <span class="float">0.12</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.V
Call <span class="key">graph</span>:
@@ -12176,10 +12176,10 @@ index % time self children calls na
<span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span>/<span class="integer">1</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.V [<span class="integer">3</span>]
------------------------------------------------------------------------------------------------------------------------------------
<span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span>/<span class="integer">1</span> groovysh_evaluate<span class="error">$</span>_run_closure1.doCall [<span class="integer">1</span>]
-[<span class="integer">2</span>] <span class="float">42.7</span> <span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.iterate [<span class="integer">2</span>]
+[<span class="integer">2</span>] <span class="float">36.0</span> <span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.iterate [<span class="integer">2</span>]
------------------------------------------------------------------------------------------------------------------------------------
<span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span>/<span class="integer">1</span> groovysh_evaluate<span class="error">$</span>_run_closure1.doCall [<span class="integer">1</span>]
-[<span class="integer">3</span>] <span class="float">9.7</span> <span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.V [<span class="integer">3</span>]
+[<span class="integer">3</span>] <span class="float">12.1</span> <span class="float">0.00</span> <span class="float">0.00</span> <span class="integer">1</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.V [<span class="integer">3</span>]
------------------------------------------------------------------------------------------------------------------------------------
==><span class="predefined-constant">null</span></code></pre>
</div>
@@ -12345,7 +12345,7 @@ execute it.</p>
<p>TinkerPop offers several reference implementations of its interfaces that are not only meant for production usage,
but also represent models by which different graph providers can build their systems. More specific documentation
on how to build systems at this level of the API can be found in the
-<a href="http://tinkerpop.apache.org/docs/3.1.1-incubating/dev/provider/">Provider Documentation</a>. The following sections
+<a href="http://tinkerpop.apache.org/docs/3.2.1-SNAPSHOT/dev/provider/">Provider Documentation</a>. The following sections
describe the various reference implementations and their usage.</p>
</div>
<div class="sect1">
@@ -12419,7 +12419,7 @@ gremlin> g = graph.traversal()
gremlin> graph.io(graphml()).readGraph(<span class="string"><span class="delimiter">'</span><span class="content">data/grateful-dead.xml</span><span class="delimiter">'</span></span>)
==><span class="predefined-constant">null</span>
gremlin> clock(<span class="integer">1000</span>) {g.V().has(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">Garcia</span><span class="delimiter">'</span></span>).iterate()} <span class="comment">//</span><b>(1)</b>
-==><span class="float">0.20952555099999998</span>
+==><span class="float">0.192390489</span>
gremlin> graph = TinkerGraph.open()
==>tinkergraph[<span class="key">vertices</span>:<span class="integer">0</span> <span class="key">edges</span>:<span class="integer">0</span>]
gremlin> g = graph.traversal()
@@ -12429,7 +12429,7 @@ gremlin> graph.createIndex(<span clas
gremlin> graph.io(graphml()).readGraph(<span class="string"><span class="delimiter">'</span><span class="content">data/grateful-dead.xml</span><span class="delimiter">'</span></span>)
==><span class="predefined-constant">null</span>
gremlin> clock(<span class="integer">1000</span>){g.V().has(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">Garcia</span><span class="delimiter">'</span></span>).iterate()} <span class="comment">//</span><b>(2)</b>
-==><span class="float">0.049196567999999996</span></code></pre>
+==><span class="float">0.047473408999999994</span></code></pre>
</div>
</div>
<div class="colist arabic">
@@ -12580,7 +12580,7 @@ gremlin> g.V().properties()
==>vp[name->gremlin]
==>vp[name->tinkergraph]
gremlin> conf = <span class="keyword">new</span> BaseConfiguration()
-==>org.apache.commons.configuration.BaseConfiguration<span class="error">@</span><span class="float">18d</span><span class="octal">003</span>cd
+==>org.apache.commons.configuration.BaseConfiguration<span class="error">@</span><span class="float">7237f</span><span class="integer">3</span>c1
gremlin> conf.setProperty(<span class="string"><span class="delimiter">"</span><span class="content">gremlin.tinkergraph.defaultVertexPropertyCardinality</span><span class="delimiter">"</span></span>,<span class="string"><span class="delimiter">"</span><span class="content">list</span><span class="delimiter">"</span></span>)
==><span class="predefined-constant">null</span>
gremlin> graph = TinkerGraph.open(conf)
@@ -12765,16 +12765,16 @@ gremlin> g = graph.traversal()
gremlin> g.tx().commit()
==><span class="predefined-constant">null</span>
gremlin> clock(<span class="integer">1000</span>) {g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">artist</span><span class="delimiter">'</span></span>).has(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">Garcia</span><span class="delimiter">'</span></span>).iterate()} <span class="comment">//</span><b>(1)</b>
-==><span class="float">1.3321264959999999</span>
+==><span class="float">1.533278613</span>
gremlin> graph.cypher(<span class="string"><span class="delimiter">"</span><span class="content">CREATE INDEX ON :artist(name)</span><span class="delimiter">"</span></span>) <span class="comment">//</span><b>(2)</b>
gremlin> g.tx().commit()
==><span class="predefined-constant">null</span>
gremlin> <span class="predefined-type">Thread</span>.sleep(<span class="integer">5000</span>) <span class="comment">//</span><b>(3)</b>
==><span class="predefined-constant">null</span>
gremlin> clock(<span class="integer">1000</span>) {g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">artist</span><span class="delimiter">'</span></span>).has(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">Garcia</span><span class="delimiter">'</span></span>).iterate()} <span class="comment">//</span><b>(4)</b>
-==><span class="float">0.14675529799999998</span>
+==><span class="float">0.152722499</span>
gremlin> clock(<span class="integer">1000</span>) {g.V().has(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">Garcia</span><span class="delimiter">'</span></span>).iterate()} <span class="comment">//</span><b>(5)</b>
-==><span class="float">2.017649016</span>
+==><span class="float">1.988534393</span>
gremlin> graph.cypher(<span class="string"><span class="delimiter">"</span><span class="content">DROP INDEX ON :artist(name)</span><span class="delimiter">"</span></span>) <span class="comment">//</span><b>(6)</b>
gremlin> g.tx().commit()
==><span class="predefined-constant">null</span>
@@ -13078,6 +13078,107 @@ gremlin.neo4j.conf.relationship_auto_ind
</div>
</div>
</div>
+<div class="sect2">
+<h3 id="_high_availability_configuration">High Availability Configuration</h3>
+<div class="paragraph">
+<p>TinkerPop supports running Neo4j with its fault tolerant master-slave replication configuration, referred to as its
+<a href="http://neo4j.com/docs/operations-manual/current/#_neo4j_cluster_install">High Availability (HA) cluster</a>. From the
+TinkerPop perspective, configuring for HA is not that different than configuring for embedded mode as shown above. The
+main difference is the usage of HA configuration options that enable the cluster. Once connected to a cluster, usage
+from the TinkerPop perspective is largely the same.</p>
+</div>
+<div class="paragraph">
+<p>In configuring for HA the most important thing to realize is that all Neo4j HA settings are simply passed through the
+TinkerPop configuration settings given to the <code>GraphFactory.open()</code> or <code>Neo4j.open()</code> methods. For example, to
+provide the all-important <code>ha.server_id</code> configuration option through TinkerPop, simply prefix that key with the
+TinkerPop Neo4j key of <code>gremlin.neo4j.conf</code>.</p>
+</div>
+<div class="paragraph">
+<p>The following properties demonstrates one of the three configuration files required to setup a simple three node HA
+cluster on the same machine instance:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay"><code class="properties language-properties">gremlin.graph=org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph
+gremlin.neo4j.directory=/tmp/neo4j.server1
+gremlin.neo4j.conf.ha.server_id=1
+gremlin.neo4j.conf.ha.initial_hosts=localhost:5001\,localhost:5002\,localhost:5003
[... 522 lines stripped ...]