You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Stephen Mallette (Jira)" <ji...@apache.org> on 2019/12/18 20:26:00 UTC
[jira] [Commented] (TINKERPOP-2323) Bindings in P-arguments don't
work when (de)serializing from/to bytecode
[ https://issues.apache.org/jira/browse/TINKERPOP-2323?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16999482#comment-16999482 ]
Stephen Mallette commented on TINKERPOP-2323:
---------------------------------------------
Funny that this is a workaround on {{tp33}} but it fails (locks up the build actually) on {{tp34}}:
{code}
results = g.V().has('person', 'age', ('x', lt(30))).count().next()
assert 2 == results
{code}
I guess we should get this working properly but something inherent to {{P}} construction is preventing it from working right - when I tried to fix it I ended up with failing tests around {{and()}} from the GLV test suite. Not sure what's wrong there.
> Bindings in P-arguments don't work when (de)serializing from/to bytecode
> ------------------------------------------------------------------------
>
> Key: TINKERPOP-2323
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2323
> Project: TinkerPop
> Issue Type: Bug
> Components: process, structure
> Affects Versions: 3.4.4
> Environment: Windows 10, Java 1.8.0_231
> Reporter: Daniel C. Weber
> Priority: Major
>
> The query below (a) in bytecode format represents the query "g.V().hasLabel('Person').has('Age), gt(30))" and contains a binding as an argument to P.gt. When sent over Websocket to Gremlin Serve 3.4.4, it leads to the exception (b) on the server.
> Furthermore, running the following query in Gremlin Console 3.4.4 suggests that bindings are not serialized to bytecode if in a predicate:
> {code}
> gremlin> g.V().has(b.of('z','person'),b.of('y','age'),P.gt(b.of('x',30))).getBytecode()
> ==>[[], [V(), has(binding[z=person], binding[y=age], gt(30))]]
> {code}
> There's a corresponding discussion in gremlin-users: [https://groups.google.com/forum/#!topic/gremlin-users/ltVdaxSQY1s]
> There also has been a previous issue dealing with gremlinpython that was closed as "not a problem": https://issues.apache.org/jira/browse/TINKERPOP-1887
> (a)
> {code}
> {
> "requestId": "c210d51a-42de-4906-b4c7-8af5d21d6024",
> "op": "bytecode",
> "processor": "traversal",
> "args": {
> "gremlin": {
> "@type": "g:Bytecode",
> "@value": {
> "step": [
> [
> "V"
> ],
> [
> "hasLabel",
> {
> "@type": "g:Binding",
> "@value": {
> "value": "Person",
> "key": "_a"
> }
> }
> ],
> [
> "has",
> {
> "@type": "g:Binding",
> "@value": {
> "value": "Age",
> "key": "_b"
> }
> },
> {
> "@type": "g:P",
> "@value": {
> "predicate": "gt",
> "value": {
> "@type": "g:Binding",
> "@value": {
> "value": {
> "@type": "g:Int32",
> "@value": 30
> },
> "key": "_c"
> }
> }
> }
> }
> ]
> ]
> }
> },
> "aliases": {
> "g": "g"
> }
> }
> }
> {code}
>
> (b)
> {code}
> java.lang.IllegalArgumentException: Cannot compare '29' (Integer) and 'binding[_c=30]' (Binding) as both need to be an instance of Number or Comparable (and of the same type)
> at org.apache.tinkerpop.gremlin.process.traversal.Compare.throwException(Compare.java:193)
> at org.apache.tinkerpop.gremlin.process.traversal.Compare.access$300(Compare.java:34)
> at org.apache.tinkerpop.gremlin.process.traversal.Compare$3.test(Compare.java:96)
> at org.apache.tinkerpop.gremlin.process.traversal.P.test(P.java:72)
> at org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer.testValue(HasContainer.java:118)
> at org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer.test(HasContainer.java:94)
> at org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer.testAll(HasContainer.java:180)
> at org.apache.tinkerpop.gremlin.tinkergraph.process.traversal.step.sideEffect.TinkerGraphStep.iteratorList(TinkerGraphStep.java:133)
> at org.apache.tinkerpop.gremlin.tinkergraph.process.traversal.step.sideEffect.TinkerGraphStep.vertices(TinkerGraphStep.java:101)
> at org.apache.tinkerpop.gremlin.tinkergraph.process.traversal.step.sideEffect.TinkerGraphStep.lambda$new$0(TinkerGraphStep.java:65)
> at org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep.processNextStart(GraphStep.java:157)
> at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143)
> at org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50)
> at org.apache.tinkerpop.gremlin.process.traversal.step.map.MapStep.processNextStart(MapStep.java:36)
> at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143)
> at org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.hasNext(DefaultTraversal.java:197)
> at org.apache.tinkerpop.gremlin.server.util.TraverserIterator.fillBulker(TraverserIterator.java:69)
> at org.apache.tinkerpop.gremlin.server.util.TraverserIterator.hasNext(TraverserIterator.java:56)
> at org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor.handleIterator(TraversalOpProcessor.java:512)
> at org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor.lambda$iterateBytecodeTraversal$4(TraversalOpProcessor.java:411)
> at java.util.concurrent.FutureTask.run(Unknown Source)
> at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
> at java.util.concurrent.FutureTask.run(Unknown Source)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)