[
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)