You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Kirk Lund (JIRA)" <ji...@apache.org> on 2016/09/14 16:55:20 UTC

[jira] [Comment Edited] (GEODE-1842) TypedJson may throw StackOverflowError and should be replaced with Jackson

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

Kirk Lund edited comment on GEODE-1842 at 9/14/16 4:55 PM:
-----------------------------------------------------------

There's long history of TypedJson producing StackOverflowErrors and repeatedly being fixed for different variations of the underlying cause:
{noformat}
SystemFailure Watchdog: [warning] failure detected
java.lang.StackOverflowError
        at java.lang.Class.getEnclosingMethod0(Native Method)
        at java.lang.Class.getEnclosingMethodInfo(Class.java:949)
        at java.lang.Class.isLocalOrAnonymousClass(Class.java:1259)
        at java.lang.Class.getCanonicalName(Class.java:1187)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeType(TypedJson.java:468)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeKeyValue(TypedJson.java:273)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeChildrens(TypedJson.java:512)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.addVal(TypedJson.java:251)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeVal(TypedJson.java:239)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeKeyValue(TypedJson.java:284)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeChildrens(TypedJson.java:512
{noformat}
Old ticket: Querying Circular Object Graphs Crashes Server (Java Serialization)
Old ticket: Stack overflow in pulse query



was (Author: klund):
There's long history of TypedJson producing StackOverflowErrors and repeatedly being fixed for different variations of the underlying cause:
{noformat}
SystemFailure Watchdog: [warning] failure detected
java.lang.StackOverflowError
        at java.lang.Class.getEnclosingMethod0(Native Method)
        at java.lang.Class.getEnclosingMethodInfo(Class.java:949)
        at java.lang.Class.isLocalOrAnonymousClass(Class.java:1259)
        at java.lang.Class.getCanonicalName(Class.java:1187)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeType(TypedJson.java:468)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeKeyValue(TypedJson.java:273)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeChildrens(TypedJson.java:512)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.addVal(TypedJson.java:251)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeVal(TypedJson.java:239)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeKeyValue(TypedJson.java:284)
        at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeChildrens(TypedJson.java:512
{noformat}
Old ticket:Querying Circular Object Graphs Crashes Server (Java Serialization)
Old ticket: Stack overflow in pulse query


> TypedJson may throw StackOverflowError and should be replaced with Jackson
> --------------------------------------------------------------------------
>
>                 Key: GEODE-1842
>                 URL: https://issues.apache.org/jira/browse/GEODE-1842
>             Project: Geode
>          Issue Type: Bug
>          Components: gfsh, pulse, querying
>            Reporter: Kirk Lund
>            Assignee: Kirk Lund
>            Priority: Critical
>
> TypedJson is prone to StackOverflowErrors which results in SystemFailure shutdown of any Geode server that hits this problem. Below is the latest error stack reported against TypedJson:
> {noformat}
> java.lang.StackOverflowError
> at java.lang.Class.getEnclosingMethodInfo(Class.java:1072)
> at java.lang.Class.getEnclosingClass(Class.java:1272)
> at java.lang.Class.getSimpleBinaryName(Class.java:1443)
> at java.lang.Class.getSimpleName(Class.java:1309)
> at java.lang.Class.getCanonicalName(Class.java:1399)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.internalToExternal(TypedJson.java:626)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeType(TypedJson.java:610)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeKeyValue(TypedJson.java:345)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.visitSpecialObjects(TypedJson.java:517)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeKeyValue(TypedJson.java:353)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.visitChildrens(TypedJson.java:670)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.addVal(TypedJson.java:323)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeVal(TypedJson.java:314)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeKeyValue(TypedJson.java:357)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.visitChildrens(TypedJson.java:670)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.addVal(TypedJson.java:323)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeVal(TypedJson.java:314)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeKeyValue(TypedJson.java:357)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.visitSpecialObjects(TypedJson.java:517)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeKeyValue(TypedJson.java:353)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.visitChildrens(TypedJson.java:670)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.addVal(TypedJson.java:323)
> at com.gemstone.gemfire.management.internal.cli.json.TypedJson.writeVal(TypedJson.java:314)
> {noformat}
> QueryDataFunction uses TypedJson to serialize query results into JSON to return to GFSH or Pulse. Rather than maintain a broken custom JSON parser, we should replace TypedJson with Jackson.



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