Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GraphAPI path: ONetworkProtocolBinary: Cannot serialize record #7308

Closed
jmau2002 opened this Issue Apr 5, 2017 · 3 comments

Comments

Projects
None yet
5 participants
@jmau2002
Copy link

jmau2002 commented Apr 5, 2017

OrientDB Version: 2.2.17

Java Version: \jdk1.8.0_40

OS: Windows 7 64bit

Expected behavior

Path returned to client

Actual behavior

Error on server side in ONetworkProtocolBinary: "Cannot serialize record"
2017-04-05 13:36:56:157 WARNI {db=GratefulDeadConcerts} Cannot serialize record: [v(Entity)[#81:0], v(Entity)[#83:0], v(Entity)[#81:1]] [ONetworkProtocolBinary]

Steps to reproduce

Setup:

  • OrientDB as server, GratefulDeadConcerts database
  • java app as client, accessing the remote database using tinkerpop 2.6 gremlin-groovy
// Gremlin expression which returns a path
OrientGraph graph = new OrientGraph("remote:localhost/GratefulDeadConcerts");
String gremlinCmd2 = "g.v('81:0').both.loop(1){it.loops<5}{it.object.name=='Robert'}.simplePath.path";
Iterable<?> allVertices =  graph.command(new OCommandGremlin(gremlinCmd2)).execute();
Iterator<?> iterator = allVertices.iterator();
while (iterator.hasNext()) {
        Object v = iterator.next();    // error here
       System.out.println(v);
}

On the client side, I receive in iterator.next()
java.util.NoSuchElementException
at com.tinkerpop.blueprints.impls.orient.OrientDynaElementIterator.next(OrientDynaElementIterator.java:57)

On the server side I see
2017-04-05 13:39:04:287 WARNI {db=GratefulDeadConcerts} Cannot serialize record: [v(Entity)[#81:0], v(Entity)[#82:0], v(Entity)[#81:1]] [ONe
tworkProtocolBinary]

Why can't the path be serialised?

I saw [1] which was solved in 2.2 (10/2016), so it's probably not the same problem.

[1] #5579

@lvca lvca added the bug label Apr 14, 2017

@lvca lvca added this to the 2.2.x (next hotfix) milestone Apr 14, 2017

@Zakjholt

This comment has been minimized.

Copy link

Zakjholt commented May 22, 2017

Also experiencing the same error using any gremlin traversal query with the .groupBy and .cap pipes. It works fine in the studio, but cannot serialize to orientjs over network binary
OrientDB version 2.2.20

@tglman

This comment has been minimized.

Copy link
Member

tglman commented May 22, 2017

hi @jmau2002, @Zakjholt

The reason why you get this error is because we do not support result sets of collection types in the binary protocol, I just pushed a fix in the integration between orient and gremlin that convert this kind of results in result set of documents, that are correctly handled by the binary protocol fixing the problem.

the fix will be release in 2.2.21

Regards

@tglman

This comment has been minimized.

Copy link
Member

tglman commented Jun 5, 2017

Hi,

The 2.2.21 has been released last week, closing this.

Re-open if the problem happen again.

Regards

@tglman tglman closed this Jun 5, 2017

@robfrank robfrank modified the milestones: 2.2.x (next hotfix), 2.2.22 Jun 19, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.