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

Dylan Millikin commented on TINKERPOP3-732:
-------------------------------------------

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)

Reply via email to