tinkerpop-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dylan Millikin (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (TINKERPOP3-732) gremlin-server GraphSON serializer issue with tree()
Date Mon, 03 Aug 2015 18:40:05 GMT

    [ https://issues.apache.org/jira/browse/TINKERPOP3-732?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14652230#comment-14652230
] 

Dylan Millikin edited comment on TINKERPOP3-732 at 8/3/15 6:39 PM:
-------------------------------------------------------------------

Thanks Matt that worked like a charm.

I found a few seconds to play around today and immediately stumbled on what looks like an
issue with jackson ( https://github.com/FasterXML/jackson-databind/issues/339 ) that's preventing
this feature from functioning correctly (as is).
The gist of it is that {{mapper.writeValueAsString()}} does not play well with circular generics
that extend {{Map}} (which is what {{Tree}} is?).

{code:java}
final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
final Tree t = g.V().out().out().tree().next();
final String json = mapper.writeValueAsString(t); // doesn't seem to like this.
{code}
(A tree serializer is properly registered)

There's also this stackOverflow post for extra info (check comments) :  http://stackoverflow.com/questions/14004854/circular-generics-with-jackson

I might be missing something obvious though so I wanted to run it by you guys.


was (Author: dmill):
Thanks Matt that worked like a charm.

I found a few seconds to play around today and immediately stumbled on what looks like an
issue with jackson ( https://github.com/FasterXML/jackson-databind/issues/339 ) that's preventing
this feature from functioning correctly (as is).
The gist of it is that {{mapper.writeValueAsString()}} does not play well with circular generics
that extend {{Map}} (which is what {{Tree}} is?).

{code:java}
final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
final Tree t = g.V().out().out().tree().next();
final String json = mapper.writeValueAsString(t); // doesn't seem to like this.
{code}
(A tree serializer is properly registered)

There's also this stackOverflow post for extra info (check comments) :  http://stackoverflow.com/questions/14004854/circular-generics-with-jackson

I might be missing something obvious, but if not, changes here might go beyond the scope of
only affecting Tree serialization. Wanted to talk about it.

> gremlin-server GraphSON serializer issue with tree()
> ----------------------------------------------------
>
>                 Key: TINKERPOP3-732
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP3-732
>             Project: TinkerPop 3
>          Issue Type: Improvement
>          Components: io
>    Affects Versions: 3.0.0-incubating
>            Reporter: Dylan Millikin
>            Assignee: stephen mallette
>
> When using the {{tree()}} step with a GraphSON serializer the server hangs (though I've
seen some form of serialization errors in more complex scenarios over titan).
> The following works fine in the console but fails using the graphSON serializer:
> {code:java}
> g.V(1).repeat(out()).until(out().count().is(0)).tree() // fails with .next() as well
> {code}
> The following works without a problem though:
> {code:java}
> g.V(1).repeat(out()).until(out().count().is(0))
> {code}
> Here's the configuration file I use for these tests:
> {code}
> host: localhost
> port: 8182
> threadPoolWorker: 1
> gremlinPool: 8
> scriptEvaluationTimeout: 30000
> serializedResponseTimeout: 30000
> channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
> graphs: {
>   graph: conf/tinkergraph-empty.properties
> }
> plugins:
>   - tinkerpop.tinkergraph
> scriptEngines: {
>   gremlin-groovy: {
>     imports: [java.lang.Math],
>     staticImports: [java.lang.Math.PI],
>     scripts: [scripts/generate-classic.groovy]}}
> serializers:
>   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 }
>   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config:
{ serializeResultToString: true }}
>   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0
}
>   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0
}
> processors:
>   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config:
{ sessionTimeout: 28800000 }}
> metrics: {
>   consoleReporter: {enabled: true, interval: 180000},
>   csvReporter: {enabled: true, interval: 180000, fileName: /tmp/gremlin-server-metrics.csv},
>   jmxReporter: {enabled: true},
>   slf4jReporter: {enabled: true, interval: 180000},
>   gangliaReporter: {enabled: false, interval: 180000, addressingMode: MULTICAST},
>   graphiteReporter: {enabled: false, interval: 180000}
> }
> threadPoolBoss: 1
> maxInitialLineLength: 4096
> maxHeaderSize: 8192
> maxChunkSize: 8192
> maxContentLength: 65536
> maxAccumulationBufferComponents: 1024
> resultIterationBatchSize: 64
> writeBufferHighWaterMark: 32768
> writeBufferHighWaterMark: 65536
> ssl: {
>   enabled: false} 
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message