[jira] [Commented] (TINKERPOP-1650) PathRetractionStrategy makes Match steps unsolvable
[ https://issues.apache.org/jira/browse/TINKERPOP-1650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16200801#comment-16200801 ] ASF GitHub Bot commented on TINKERPOP-1650: --- Github user asfgit closed the pull request at: https://github.com/apache/tinkerpop/pull/731 > PathRetractionStrategy makes Match steps unsolvable > --- > > Key: TINKERPOP-1650 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1650 > Project: TinkerPop > Issue Type: Bug > Components: process >Affects Versions: 3.2.3, 3.2.4 >Reporter: Branden Moore >Assignee: Ted Wilmes > > The `PathRetractionStrategy` can make certain Match() steps "Unsolvable". > This (nonsensical) example demonstrates the issue: > {code} > gremlin> g = graph.traversal() > ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard] > gremlin> > g.V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > The provided match pattern is unsolvable: [[MatchStartStep(a), > VertexStep(OUT,[created],vertex), MatchEndStep(sw)], [MatchStartStep(sw), > HasStep([lang.eq(java)]), MatchEndStep(java)], [MatchStartStep(sw), > WherePredicateStep(neq(a)), MatchEndStep]] > Type ':help' or ':h' for help. > Display stack trace? [yN]n > gremlin> > {code} > If we remove the `PathRetractionStrategy`, or use `g.withPath()` the match > step is solvable, and works fine. > {code} > g.withoutStrategies(PathRetractionStrategy).V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > ==>v[1] > ==>v[4] > ==>v[4] > ==>v[6] > gremlin> > g.withPath().V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > ==>v[1] > ==>v[4] > ==>v[4] > ==>v[6] > gremlin> > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (TINKERPOP-1650) PathRetractionStrategy makes Match steps unsolvable
[ https://issues.apache.org/jira/browse/TINKERPOP-1650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16200763#comment-16200763 ] ASF GitHub Bot commented on TINKERPOP-1650: --- Github user dkuppitz commented on the issue: https://github.com/apache/tinkerpop/pull/731 `docker/build.sh -t -i` succeeded. VOTE: +1 > PathRetractionStrategy makes Match steps unsolvable > --- > > Key: TINKERPOP-1650 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1650 > Project: TinkerPop > Issue Type: Bug > Components: process >Affects Versions: 3.2.3, 3.2.4 >Reporter: Branden Moore >Assignee: Ted Wilmes > > The `PathRetractionStrategy` can make certain Match() steps "Unsolvable". > This (nonsensical) example demonstrates the issue: > {code} > gremlin> g = graph.traversal() > ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard] > gremlin> > g.V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > The provided match pattern is unsolvable: [[MatchStartStep(a), > VertexStep(OUT,[created],vertex), MatchEndStep(sw)], [MatchStartStep(sw), > HasStep([lang.eq(java)]), MatchEndStep(java)], [MatchStartStep(sw), > WherePredicateStep(neq(a)), MatchEndStep]] > Type ':help' or ':h' for help. > Display stack trace? [yN]n > gremlin> > {code} > If we remove the `PathRetractionStrategy`, or use `g.withPath()` the match > step is solvable, and works fine. > {code} > g.withoutStrategies(PathRetractionStrategy).V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > ==>v[1] > ==>v[4] > ==>v[4] > ==>v[6] > gremlin> > g.withPath().V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > ==>v[1] > ==>v[4] > ==>v[4] > ==>v[6] > gremlin> > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (TINKERPOP-1650) PathRetractionStrategy makes Match steps unsolvable
[ https://issues.apache.org/jira/browse/TINKERPOP-1650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16199459#comment-16199459 ] ASF GitHub Bot commented on TINKERPOP-1650: --- Github user okram commented on the issue: https://github.com/apache/tinkerpop/pull/731 VOTE +1 > PathRetractionStrategy makes Match steps unsolvable > --- > > Key: TINKERPOP-1650 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1650 > Project: TinkerPop > Issue Type: Bug > Components: process >Affects Versions: 3.2.3, 3.2.4 >Reporter: Branden Moore >Assignee: Ted Wilmes > > The `PathRetractionStrategy` can make certain Match() steps "Unsolvable". > This (nonsensical) example demonstrates the issue: > {code} > gremlin> g = graph.traversal() > ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard] > gremlin> > g.V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > The provided match pattern is unsolvable: [[MatchStartStep(a), > VertexStep(OUT,[created],vertex), MatchEndStep(sw)], [MatchStartStep(sw), > HasStep([lang.eq(java)]), MatchEndStep(java)], [MatchStartStep(sw), > WherePredicateStep(neq(a)), MatchEndStep]] > Type ':help' or ':h' for help. > Display stack trace? [yN]n > gremlin> > {code} > If we remove the `PathRetractionStrategy`, or use `g.withPath()` the match > step is solvable, and works fine. > {code} > g.withoutStrategies(PathRetractionStrategy).V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > ==>v[1] > ==>v[4] > ==>v[4] > ==>v[6] > gremlin> > g.withPath().V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > ==>v[1] > ==>v[4] > ==>v[4] > ==>v[6] > gremlin> > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (TINKERPOP-1650) PathRetractionStrategy makes Match steps unsolvable
[ https://issues.apache.org/jira/browse/TINKERPOP-1650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16199322#comment-16199322 ] ASF GitHub Bot commented on TINKERPOP-1650: --- GitHub user twilmes opened a pull request: https://github.com/apache/tinkerpop/pull/731 TINKERPOP-1650: PathRetractionStrategy makes Match steps unsolvable This bug was a result of an unintentionally shared set between a MatchStep and WhereStep's. This caused the `p` label to be incorrectly pulled into the `matchStartLabels` for the following query: ` g.V().hasLabel("person").as("p").match(__.as("a").out("created").as("sw"), __.as("sw").has("lang", "java").as("java")).where("sw", neq("a")).select("p")` As a result, when the match step was attempting to pick a `startLabelsBundle`, it failed to grab one because the incoming traverser already had the `p` label in its path. This fix added defensive copying to all of the `setKeepLabels` calls to prevent the possibility of this unintentional sharing of a mutable collection. ``` [INFO] [INFO] Reactor Summary: [INFO] [INFO] Apache TinkerPop ... SUCCESS [ 3.238 s] [INFO] Apache TinkerPop :: Gremlin Shaded . SUCCESS [ 1.972 s] [INFO] Apache TinkerPop :: Gremlin Core ... SUCCESS [01:04 min] [INFO] Apache TinkerPop :: Gremlin Test ... SUCCESS [ 9.145 s] [INFO] Apache TinkerPop :: Gremlin Groovy . SUCCESS [04:00 min] [INFO] Apache TinkerPop :: Gremlin Groovy Test SUCCESS [ 5.057 s] [INFO] Apache TinkerPop :: TinkerGraph Gremlin SUCCESS [02:58 min] [INFO] Apache TinkerPop :: Gremlin Benchmark .. SUCCESS [ 3.874 s] [INFO] Apache TinkerPop :: Gremlin Driver . SUCCESS [ 9.796 s] [INFO] Apache TinkerPop :: Neo4j Gremlin .. SUCCESS [ 2.134 s] [INFO] Apache TinkerPop :: Gremlin Server . SUCCESS [ 42.125 s] [INFO] Apache TinkerPop :: Gremlin Python . SUCCESS [ 6.630 s] [INFO] Apache TinkerPop :: Gremlin.Net SUCCESS [ 2.892 s] [INFO] Apache TinkerPop :: Gremlin.Net - Source ... SUCCESS [ 0.118 s] [INFO] Apache TinkerPop :: Gremlin.Net - Tests SUCCESS [ 0.067 s] [INFO] Apache TinkerPop :: Hadoop Gremlin . SUCCESS [03:12 min] [INFO] Apache TinkerPop :: Spark Gremlin .. SUCCESS [01:14 min] [INFO] Apache TinkerPop :: Giraph Gremlin . SUCCESS [ 7.819 s] [INFO] Apache TinkerPop :: Gremlin Console SUCCESS [ 21.415 s] [INFO] Apache TinkerPop :: Gremlin Archetype .. SUCCESS [ 0.045 s] [INFO] Apache TinkerPop :: Archetype - TinkerGraph SUCCESS [ 4.934 s] [INFO] Apache TinkerPop :: Archetype - Server . SUCCESS [ 11.442 s] [INFO] Apache TinkerPop :: Archetype - DSL SUCCESS [ 5.675 s] [INFO] [INFO] BUILD SUCCESS [INFO] [INFO] Total time: 14:49 min [INFO] Finished at: 2017-10-10T15:35:23-05:00 [INFO] Final Memory: 278M/6262M [INFO] ``` VOTE: +1 You can merge this pull request into a Git repository by running: $ git pull https://github.com/apache/tinkerpop TINKERPOP-1650 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/tinkerpop/pull/731.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 #731 commit 73a982c7c13bc00893f34c65beec6419a56c76bc Author: Ted WilmesDate: 2017-10-10T18:46:13Z TINKERPOP-1650 * Updated setKeepLabels calls to make defensive copies of their input to avoid corruption. * Added a new test to PathRetractionStrategyTest for WhereStep. > PathRetractionStrategy makes Match steps unsolvable > --- > > Key: TINKERPOP-1650 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1650 > Project: TinkerPop > Issue Type: Bug > Components: process >Affects Versions: 3.2.3, 3.2.4 >Reporter: Branden Moore >Assignee: Ted Wilmes > > The `PathRetractionStrategy` can make certain Match() steps "Unsolvable". > This (nonsensical) example demonstrates the issue: > {code} > gremlin> g = graph.traversal() >
[jira] [Commented] (TINKERPOP-1650) PathRetractionStrategy makes Match steps unsolvable
[ https://issues.apache.org/jira/browse/TINKERPOP-1650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16051943#comment-16051943 ] Ted Wilmes commented on TINKERPOP-1650: --- Yes, I still plan on fixing this one. > PathRetractionStrategy makes Match steps unsolvable > --- > > Key: TINKERPOP-1650 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1650 > Project: TinkerPop > Issue Type: Bug > Components: process >Affects Versions: 3.2.3, 3.2.4 >Reporter: Branden Moore >Assignee: Ted Wilmes > > The `PathRetractionStrategy` can make certain Match() steps "Unsolvable". > This (nonsensical) example demonstrates the issue: > {code} > gremlin> g = graph.traversal() > ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard] > gremlin> > g.V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > The provided match pattern is unsolvable: [[MatchStartStep(a), > VertexStep(OUT,[created],vertex), MatchEndStep(sw)], [MatchStartStep(sw), > HasStep([lang.eq(java)]), MatchEndStep(java)], [MatchStartStep(sw), > WherePredicateStep(neq(a)), MatchEndStep]] > Type ':help' or ':h' for help. > Display stack trace? [yN]n > gremlin> > {code} > If we remove the `PathRetractionStrategy`, or use `g.withPath()` the match > step is solvable, and works fine. > {code} > g.withoutStrategies(PathRetractionStrategy).V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > ==>v[1] > ==>v[4] > ==>v[4] > ==>v[6] > gremlin> > g.withPath().V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > ==>v[1] > ==>v[4] > ==>v[4] > ==>v[6] > gremlin> > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (TINKERPOP-1650) PathRetractionStrategy makes Match steps unsolvable
[ https://issues.apache.org/jira/browse/TINKERPOP-1650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16051935#comment-16051935 ] stephen mallette commented on TINKERPOP-1650: - [~twilmes] are you still planning to look at this one? > PathRetractionStrategy makes Match steps unsolvable > --- > > Key: TINKERPOP-1650 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1650 > Project: TinkerPop > Issue Type: Bug > Components: process >Affects Versions: 3.2.3, 3.2.4 >Reporter: Branden Moore >Assignee: Ted Wilmes > > The `PathRetractionStrategy` can make certain Match() steps "Unsolvable". > This (nonsensical) example demonstrates the issue: > {code} > gremlin> g = graph.traversal() > ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard] > gremlin> > g.V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > The provided match pattern is unsolvable: [[MatchStartStep(a), > VertexStep(OUT,[created],vertex), MatchEndStep(sw)], [MatchStartStep(sw), > HasStep([lang.eq(java)]), MatchEndStep(java)], [MatchStartStep(sw), > WherePredicateStep(neq(a)), MatchEndStep]] > Type ':help' or ':h' for help. > Display stack trace? [yN]n > gremlin> > {code} > If we remove the `PathRetractionStrategy`, or use `g.withPath()` the match > step is solvable, and works fine. > {code} > g.withoutStrategies(PathRetractionStrategy).V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > ==>v[1] > ==>v[4] > ==>v[4] > ==>v[6] > gremlin> > g.withPath().V().hasLabel("person").as("perp").match(__.as("a").out("created").as("sw"), > __.as("sw").has("lang", "java").as("java")).where("sw", > neq("a")).select("perp") > ==>v[1] > ==>v[4] > ==>v[4] > ==>v[6] > gremlin> > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)