[ https://issues.apache.org/jira/browse/TINKERPOP-3058?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jan updated TINKERPOP-3058: --------------------------- Description: Implementing our own [GremlinDSL|https://tinkerpop.apache.org/docs/current/reference/#gremlin-java-dsl] we encounter a `StackoverFlowError` as soon as we use `or` in the @GremlinDsl interface. The same condition works fine if defined directly in the query. It also works as soon as we remove the or from the condition. {code:java} @GremlinDsl(traversalSource = "com.corp.foo.gremlin.CustomGraphTraversalSource") public interface CustomTraversalDsl<S, E> extends GraphTraversal.Admin<S, E> { default GraphTraversal<S, Vertex> outWithOr() { return out() .or( has("key"), has("key", false) ); } default GraphTraversal<S, Vertex> outWithoutOr() { return out() .has("key") .has("key", false); } } g.V().where(outWithoutOr()).next(); -> works fine g.V().where(out().or(has("key"), has("key", false))).next() -> works fine g.V().where(outWithOr()).next(); -> java.lang.StackOverflowError at org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.hasStepOfAssignableClass(TraversalHelper.java:349) at org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy.apply(ConnectiveStrategy.java:63) at org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.applyTraversalRecursively(TraversalHelper.java:503) at org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.applyTraversalRecursively(TraversalHelper.java:491){code} was: Implementing our own [GremlinDSL|https://tinkerpop.apache.org/docs/current/reference/#gremlin-java-dsl] we encounter a `StackoverFlowError` as soon as we use `or` in the @GremlinDsl interface. The same condition works fine if defined directly in the query. It also works as soon as we remove the or from the condition. {code:java} @GremlinDsl(traversalSource = "com.corp.foo.gremlin.CustomGraphTraversalSource") public interface CustomTraversalDsl<S, E> extends GraphTraversal.Admin<S, E> { default GraphTraversal<S, Vertex> outWithOr() { return out() .or( has("key"), has("key", false) ); } default GraphTraversal<S, Vertex> outWithoutOr() { return out() .has("key") .has("key", false); } } g.V().where(outWithoutOr()).next(); -> works fine g.V().where(out().or(has("key"), has("key", false))).next() -> works fine g.V().where(outWithOr()).next(); -> java.lang.StackOverflowError at org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.hasStepOfAssignableClass(TraversalHelper.java:349) at org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy.apply(ConnectiveStrategy.java:63) at org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.applyTraversalRecursively(TraversalHelper.java:503) at org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.applyTraversalRecursively(TraversalHelper.java:491){code} > StackOverFlowError when using `or` in Custom Gremlin DSL > -------------------------------------------------------- > > Key: TINKERPOP-3058 > URL: https://issues.apache.org/jira/browse/TINKERPOP-3058 > Project: TinkerPop > Issue Type: Bug > Components: tinkergraph > Affects Versions: 3.6.4 > Reporter: Jan > Priority: Major > > Implementing our own > [GremlinDSL|https://tinkerpop.apache.org/docs/current/reference/#gremlin-java-dsl] > we encounter a `StackoverFlowError` as soon as we use `or` in the > @GremlinDsl interface. > The same condition works fine if defined directly in the query. > It also works as soon as we remove the or from the condition. > {code:java} > @GremlinDsl(traversalSource = > "com.corp.foo.gremlin.CustomGraphTraversalSource") > public interface CustomTraversalDsl<S, E> extends GraphTraversal.Admin<S, E> { > default GraphTraversal<S, Vertex> outWithOr() { > return out() > .or( > has("key"), > has("key", false) > ); > } > default GraphTraversal<S, Vertex> outWithoutOr() { > return out() > .has("key") > .has("key", false); > } > } > g.V().where(outWithoutOr()).next(); -> works fine > g.V().where(out().or(has("key"), has("key", false))).next() -> works fine > g.V().where(outWithOr()).next(); -> > java.lang.StackOverflowError > at > org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.hasStepOfAssignableClass(TraversalHelper.java:349) > at > org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy.apply(ConnectiveStrategy.java:63) > at > org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.applyTraversalRecursively(TraversalHelper.java:503) > at > org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.applyTraversalRecursively(TraversalHelper.java:491){code} > -- This message was sent by Atlassian Jira (v8.20.10#820010)