Github user dkuppitz commented on a diff in the pull request:
https://github.com/apache/tinkerpop/pull/711#discussion_r138436841
--- Diff:
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
---
@@ -91,6 +91,8 @@ public void setEmitTraversal(final Traversal.Admin
emitTraversal) {
}
public Traversal.Admin getRepeatTraversal() {
+if(null == this.repeatTraversal)
+throw new IllegalStateException("The repeat()-traversal was
not defined: " + this);
--- End diff --
I wouldn't throw an exception in a Getter.
---
[
https://issues.apache.org/jira/browse/TINKERPOP-1781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16163224#comment-16163224
]
Marko A. Rodriguez commented on TINKERPOP-1781:
---
There is no good general solution to this problem given that compilation will
yield steps that don't have a correlate bytecode representation. For instance,
{{ProviderOptimizationStrategy}} compilation stage.
> Traversal admin addStep does not update bytecode
>
>
> Key: TINKERPOP-1781
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1781
> Project: TinkerPop
> Issue Type: Improvement
> Components: process
>Affects Versions: 3.3.0, 3.2.6
>Reporter: Ted Wilmes
>
> Right now bytecode is constructed at traversal construction time and is not
> updated post-construction when traversal rewriting happens via strategies.
> This works fine in most cases because the traversal is locked post-strategy
> application and will be executed, not serialized out for execution somewhere
> else.
> There are issues when trying to apply client side, pre-serialization
> traversal rewriting (a kind of client-side traversal strategy outside of the
> usual strategy flow). Since a direct call to {{addStep}} circumvents the
> bytecode construction, the bytecode diverges from the rewritten traversal.
> {code}
> gremlin> traversal = g.V().out();null
> ==>null
> gremlin> traversal.getSteps()
> ==>GraphStep(vertex,[])
> ==>VertexStep(OUT,vertex)
> gremlin> traversal.getBytecode()
> ==>[[], [V(), out()]]
> gremlin> TraversalHelper.insertAfterStep(new CountGlobalStep(traversal),
> traversal.getSteps()[1], traversal.asAdmin())
> ==>null
> gremlin> traversal.getSteps()
> ==>GraphStep(vertex,[])
> ==>VertexStep(OUT,vertex)
> ==>CountGlobalStep
> gremlin> traversal.getBytecode()
> ==>[[], [V(), out()]]
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
Ted Wilmes created TINKERPOP-1781:
-
Summary: Traversal admin addStep does not update bytecode
Key: TINKERPOP-1781
URL: https://issues.apache.org/jira/browse/TINKERPOP-1781
Project: TinkerPop
Issue Type: Improvement
Components: process
Affects Versions: 3.2.6, 3.3.0
Reporter: Ted Wilmes
Right now bytecode is constructed at traversal construction time and is not
updated post-construction when traversal rewriting happens via strategies. This
works fine in most cases because the traversal is locked post-strategy
application and will be executed, not serialized out for execution somewhere
else.
There are issues when trying to apply client side, pre-serialization traversal
rewriting (a kind of client-side traversal strategy outside of the usual
strategy flow). Since a direct call to {{addStep}} circumvents the bytecode
construction, the bytecode diverges from the rewritten traversal.
{code}
gremlin> traversal = g.V().out();null
==>null
gremlin> traversal.getSteps()
==>GraphStep(vertex,[])
==>VertexStep(OUT,vertex)
gremlin> traversal.getBytecode()
==>[[], [V(), out()]]
gremlin> TraversalHelper.insertAfterStep(new CountGlobalStep(traversal),
traversal.getSteps()[1], traversal.asAdmin())
==>null
gremlin> traversal.getSteps()
==>GraphStep(vertex,[])
==>VertexStep(OUT,vertex)
==>CountGlobalStep
gremlin> traversal.getBytecode()
==>[[], [V(), out()]]
{code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
[
https://issues.apache.org/jira/browse/TINKERPOP-1752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16163142#comment-16163142
]
ASF GitHub Bot commented on TINKERPOP-1752:
---
GitHub user FlorianHockmann opened a pull request:
https://github.com/apache/tinkerpop/pull/712
TINKERPOP-1752: Gremlin.Net: Generate completely type-safe methods
https://issues.apache.org/jira/browse/TINKERPOP-1752
All steps are now (basically) type-safe and the original argument names
from Gremlin-Java are used. However, we currently don't support some Java types
like `Comparator`. Those were simply replaced by `object` until we find a
better solution. A problem with this workaround is that some overloads from
Gremlin-Java are not supported in Gremlin.Net as they would result in the same
method signature.
The implementation of `Bindings` is now basically the same as in
Gremlin-Java. This change was necessary as `Bindings.Of()` can no longer return
a `Binding` object
These changes also revealed a bug in the tests where the
`WithoutStrategies` source step was called with objects of strategies instead
of just with their types. However, `WithoutStrategies` still can't work right
now as a GraphSON serializer is missing for `Type`.
The `Group` step for example looks now like this:
```cs
///
/// Adds the group step to this .
///
public GraphTraversal< S , IDictionary > Group ()
{
Bytecode.AddStep("group");
return Wrap< S , IDictionary >(this);
}
///
/// Adds the group step to this .
///
public GraphTraversal< S , E > Group (string sideEffectKey)
{
Bytecode.AddStep("group", sideEffectKey);
return Wrap< S , E >(this);
}
```
So this should also solve
[TINKERPOP-1751](https://issues.apache.org/jira/browse/TINKERPOP-1751) that
mentioned the missing overload for `Group` that returns `IDictionary`.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/apache/tinkerpop TINKERPOP-1752
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/tinkerpop/pull/712.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #712
commit 05851764f1e20abb1a82b7d662b4681d602a5774
Author: Florian Hockmann
Date: 2017-08-17T20:57:07Z
Make Gremlin.Net graph traversal API type-safe
All steps are now type-safe and the original argument names from
Gremlin-Java are used. However, we currently don't support some Java
types like Comparator. Those were simply replaced by object until we
find a better solution. A problem of this workaround is that some
overloads from Gremlin-Java are not supported in Gremlin.Net as they
would result in the same method signature.
This required to change how Bindings work as Bindings.Of() can no longer
return a Binding object. The implementation for Bindings is now
basically the same as in Gremlin-Java.
This also revealed a bug in the tests that called the WithoutStrategies
source step with objects of strategies instead of just with their types.
However, WithoutStrategies still can't work right now as a GraphSON serializer
is missing for Type.
> Gremlin.Net: Generate completely type-safe methods
> --
>
> Key: TINKERPOP-1752
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1752
> Project: TinkerPop
> Issue Type: Improvement
> Components: language-variant
>Affects Versions: 3.2.5
>Reporter: Florian Hockmann
>Priority: Minor
>
> Currently the generated traversal methods in Gremlin.Net take {{params
> object[] args}} as an argument which allows the user to provide an arbitrary
> number of arguments with any type. While this makes the generation rather
> simple, it doesn't tell the user which arguments are actually valid so users
> can submit completely invalid traversals like:
> {code}
> g.V(1).AddE(1234, "invalidArgument2").Next()
> {code}
> Type-safe methods could also use the original argument names to tell users
> something about what kind of values the methods expect. Consider for example
> the following method signatures for the C# step {{AddE}} that are basically a
> 1:1 representation of the original Java {{addE}} step:
> {code}
> public GraphTraversal< S , Edge > AddE (Direction direction, string
> firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params object[]
> propertyKeyValues);
> public GraphTraversal< S , Edge > AddE (string edgeLabel);
> {code}
> Implementing this should make TINKERPOP-1725 obsolete and also resolve
GitHub user FlorianHockmann opened a pull request:
https://github.com/apache/tinkerpop/pull/712
TINKERPOP-1752: Gremlin.Net: Generate completely type-safe methods
https://issues.apache.org/jira/browse/TINKERPOP-1752
All steps are now (basically) type-safe and the original argument names
from Gremlin-Java are used. However, we currently don't support some Java types
like `Comparator`. Those were simply replaced by `object` until we find a
better solution. A problem with this workaround is that some overloads from
Gremlin-Java are not supported in Gremlin.Net as they would result in the same
method signature.
The implementation of `Bindings` is now basically the same as in
Gremlin-Java. This change was necessary as `Bindings.Of()` can no longer return
a `Binding` object
These changes also revealed a bug in the tests where the
`WithoutStrategies` source step was called with objects of strategies instead
of just with their types. However, `WithoutStrategies` still can't work right
now as a GraphSON serializer is missing for `Type`.
The `Group` step for example looks now like this:
```cs
///
/// Adds the group step to this .
///
public GraphTraversal< S , IDictionary > Group ()
{
Bytecode.AddStep("group");
return Wrap< S , IDictionary >(this);
}
///
/// Adds the group step to this .
///
public GraphTraversal< S , E > Group (string sideEffectKey)
{
Bytecode.AddStep("group", sideEffectKey);
return Wrap< S , E >(this);
}
```
So this should also solve
[TINKERPOP-1751](https://issues.apache.org/jira/browse/TINKERPOP-1751) that
mentioned the missing overload for `Group` that returns `IDictionary`.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/apache/tinkerpop TINKERPOP-1752
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/tinkerpop/pull/712.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #712
commit 05851764f1e20abb1a82b7d662b4681d602a5774
Author: Florian Hockmann
Date: 2017-08-17T20:57:07Z
Make Gremlin.Net graph traversal API type-safe
All steps are now type-safe and the original argument names from
Gremlin-Java are used. However, we currently don't support some Java
types like Comparator. Those were simply replaced by object until we
find a better solution. A problem of this workaround is that some
overloads from Gremlin-Java are not supported in Gremlin.Net as they
would result in the same method signature.
This required to change how Bindings work as Bindings.Of() can no longer
return a Binding object. The implementation for Bindings is now
basically the same as in Gremlin-Java.
This also revealed a bug in the tests that called the WithoutStrategies
source step with objects of strategies instead of just with their types.
However, WithoutStrategies still can't work right now as a GraphSON serializer
is missing for Type.
---
[
https://issues.apache.org/jira/browse/TINKERPOP-1287?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ted Wilmes closed TINKERPOP-1287.
-
Resolution: Not A Problem
Profiling did not show stream usage making a significant impact on performance
in this case. The use of `intern` mentioned in the comments was taken care of
by TINKERPOP-1680.
> StarGraph has an overdose of Stream usage.
> --
>
> Key: TINKERPOP-1287
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1287
> Project: TinkerPop
> Issue Type: Improvement
> Components: hadoop, structure
>Affects Versions: 3.2.0-incubating, 3.1.2-incubating
>Reporter: Marko A. Rodriguez
>Assignee: Ted Wilmes
> Fix For: 3.2.7
>
> Attachments: g.V.out.out.count.svg, stage0.svg, stage1.svg, stage2.svg
>
>
> {{StarGraph}} is loaded with {{Stream}}-usage. Gutting streams from
> TinkerGraph made it much faster. It would be good if we did the same thing
> for {{StarGraph}}.
> This can go into tp31/ and upmerge to master/.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
[
https://issues.apache.org/jira/browse/TINKERPOP-1287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16163135#comment-16163135
]
Ted Wilmes commented on TINKERPOP-1287:
---
Not at this point [~spmallette], especially since the {{intern}} was taken care
of. I'll go ahead and close it.
> StarGraph has an overdose of Stream usage.
> --
>
> Key: TINKERPOP-1287
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1287
> Project: TinkerPop
> Issue Type: Improvement
> Components: hadoop, structure
>Affects Versions: 3.2.0-incubating, 3.1.2-incubating
>Reporter: Marko A. Rodriguez
>Assignee: Ted Wilmes
> Fix For: 3.2.7
>
> Attachments: g.V.out.out.count.svg, stage0.svg, stage1.svg, stage2.svg
>
>
> {{StarGraph}} is loaded with {{Stream}}-usage. Gutting streams from
> TinkerGraph made it much faster. It would be good if we did the same thing
> for {{StarGraph}}.
> This can go into tp31/ and upmerge to master/.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
stephen mallette created TINKERPOP-1780:
---
Summary: Add authentication tests for gremlin-python
Key: TINKERPOP-1780
URL: https://issues.apache.org/jira/browse/TINKERPOP-1780
Project: TinkerPop
Issue Type: Improvement
Components: language-variant
Affects Versions: 3.2.6
Reporter: stephen mallette
Priority: Minor
Include integration tests for authentication in gremlin-python. There is a
secure test server running with the tests on port 45941 so we should be all
good to add a test or two to validate this operation.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
[
https://issues.apache.org/jira/browse/TINKERPOP-1730?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16163039#comment-16163039
]
ASF GitHub Bot commented on TINKERPOP-1730:
---
Github user FlorianHockmann commented on the issue:
https://github.com/apache/tinkerpop/pull/710
VOTE: +1
> Gremlin .NET support for GraphSON 3.0
> -
>
> Key: TINKERPOP-1730
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1730
> Project: TinkerPop
> Issue Type: Improvement
> Components: language-variant
>Affects Versions: 3.3.0
>Reporter: stephen mallette
>Priority: Minor
>
> This may be a quite minor thing at this point as [~jorgebg] already had much
> of this in place. GraphSON 3.0 should be the default for 3.3.0 - right now it
> is set to 2.0 so all the tests pass.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
Github user FlorianHockmann commented on a diff in the pull request:
https://github.com/apache/tinkerpop/pull/710#discussion_r138366459
--- Diff:
gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
---
@@ -102,9 +102,9 @@ public void g_V_HasXname_markoX_ValueMap_Next()
var connection = _connectionFactory.CreateRemoteConnection();
var g = graph.Traversal().WithRemote(connection);
-var receivedValueMap = g.V().Has("name",
"marko").ValueMap().Next();
+var receivedValueMap = g.V().Has("name",
"marko").ValueMap
stephen mallette created TINKERPOP-1779:
---
Summary: Bump to GMavenPlus 1.6
Key: TINKERPOP-1779
URL: https://issues.apache.org/jira/browse/TINKERPOP-1779
Project: TinkerPop
Issue Type: Improvement
Components: build-release
Affects Versions: 3.2.6
Reporter: stephen mallette
Assignee: stephen mallette
Priority: Minor
The new version of GMavenPlus allows for a few new capabilities which we can
make use of. Most useful is the ability to specify a groovy file for the
{{execute}} goal. As we now make use of this goal in the GLVs pretty heavily we
could greatly clean up the poms and make better re-use of code if that stuff
could be pulled out into script files that could be referenced by any module
that needs it.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
stephen mallette created TINKERPOP-1778:
---
Summary: Deprecate timedInterrupt option for Gremlin Server script
processing
Key: TINKERPOP-1778
URL: https://issues.apache.org/jira/browse/TINKERPOP-1778
Project: TinkerPop
Issue Type: Improvement
Components: server
Affects Versions: 3.2.6
Reporter: stephen mallette
Assignee: stephen mallette
Priority: Minor
The {{timedInterrupt}} option is not terribly useful because it basically does
what the combination of the regular {{scriptEvaluationTimeout}} with the
{{enableThreadInterrupt}} does. In fact it sort of competes with it, which can
lead to some different error paths which mean the same thing.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
Collections with unspecified child types are useful for mixed types, but we
are reusing those types of collections for all the cases.
This behaviour poses a problem for strict statically typed languages like
C#. Let's see if I can explain myself with an example:
valueMap() step yields a map representation. In GraphSON2, it was returned
as a js object (where keys are always strings), that were mapped to C#
Dictionary (equivalent of java's Map).
In GraphSON3, it's returned as a "g:Map", that is mapped to C#
Dictionary
Github user jorgebay commented on the issue:
https://github.com/apache/tinkerpop/pull/710
Thanks @FlorianHockmann for the feedback.
I've addressed the issues you mentioned.
About `ValueMap()`, we can continue the discussion on the
mailing list:
https://lists.apache.org/thread.html/3918353aaa63aa07b69214da24fa7aa0760004227fc57fa2b3bcae86@%3Cdev.tinkerpop.apache.org%3E
---
Github user jorgebay commented on a diff in the pull request:
https://github.com/apache/tinkerpop/pull/710#discussion_r138317662
--- Diff:
gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
---
@@ -102,9 +102,9 @@ public void g_V_HasXname_markoX_ValueMap_Next()
var connection = _connectionFactory.CreateRemoteConnection();
var g = graph.Traversal().WithRemote(connection);
-var receivedValueMap = g.V().Has("name",
"marko").ValueMap().Next();
+var receivedValueMap = g.V().Has("name",
"marko").ValueMap().Next();
--- End diff --
The serialization format for maps changed (see JIRA tickets 1427 and 1658),
the result from this traversal was originally a js object:
```js
{ "marko": { "@type": "g:Int32", "@value": 29 } }
```
And changed in GraphSON3 to a type "g:Map" for which we use
`IDictionary`.
I've started a discussion on the mailing list regarding collections child
types:
https://lists.apache.org/thread.html/3918353aaa63aa07b69214da24fa7aa0760004227fc57fa2b3bcae86@%3Cdev.tinkerpop.apache.org%3E
---