Skip to content

StackOverflowError with JSON-LD renderer #211

@ColinMaudry

Description

@ColinMaudry

Hello,

I'm testing the JSON-LD renderer to publish the French Companies register (SIRENE), and I get the following error when fetching data with my JSON-LD formatter:

018-05-21 20:27:17,327 host 0:0:0:0:0:0:0:1:3 ERROR - Error while sending response: 'com.hp.hpl.jena.shared.WrappedException: java.lang.StackOverflowError'
com.hp.hpl.jena.shared.WrappedException: java.lang.StackOverflowError
	at com.epimorphics.lda.renderers.JSONLDRenderer$1.writeAll(JSONLDRenderer.java:94)
	at com.epimorphics.lda.renderers.BytesOutTimed.writeAll(BytesOutTimed.java:34)
	at com.epimorphics.lda.restlets.RouterRestlet$2.write(RouterRestlet.java:590)
	at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:71)
	at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:57)
	at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:302)
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
	at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:927)
	at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:875)
	at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:829)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at com.epimorphics.lda.support.LogRequestFilter.doFilter(LogRequestFilter.java:103)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.StackOverflowError
	at com.hp.hpl.jena.enhanced.EnhNode.isResource(EnhNode.java:90)
	at com.epimorphics.lda.renderers.JSONLDComposer.value(JSONLDComposer.java:153)
	at com.epimorphics.lda.renderers.JSONLDComposer.composeProperties(JSONLDComposer.java:138)
	at com.epimorphics.lda.renderers.JSONLDComposer.renderResource(JSONLDComposer.java:117)
	at com.epimorphics.lda.renderers.JSONLDComposer.value(JSONLDComposer.java:161)
	at com.epimorphics.lda.renderers.JSONLDComposer.composeProperties(JSONLDComposer.java:138)
	at com.epimorphics.lda.renderers.JSONLDComposer.renderResource(JSONLDComposer.java:117)
	at com.epimorphics.lda.renderers.JSONLDComposer.value(JSONLDComposer.java:161)
	at com.epimorphics.lda.renderers.JSONLDComposer.composeProperties(JSONLDComposer.java:138)
	at com.epimorphics.lda.renderers.JSONLDComposer.renderResource(JSONLDComposer.java:117)
	at com.epimorphics.lda.renderers.JSONLDComposer.value(JSONLDComposer.java:161)
	at com.epimorphics.lda.renderers.JSONLDComposer.composeProperties(JSONLDComposer.java:138)
	at com.epimorphics.lda.renderers.JSONLDComposer.renderResource(JSONLDComposer.java:117)
	at com.epimorphics.lda.renderers.JSONLDComposer.value(JSONLDComposer.java:161)
	at com.epimorphics.lda.renderers.JSONLDComposer.composeProperties(JSONLDComposer.java:138)
	at com.epimorphics.lda.renderers.JSONLDComposer.renderResource(JSONLDComposer.java:117)
	at com.epimorphics.lda.renderers.JSONLDComposer.value(JSONLDComposer.java:161)
	at com.epimorphics.lda.renderers.JSONLDComposer.composeProperties(JSONLDComposer.java:138)
	at com.epimorphics.lda.renderers.JSONLDComposer.renderResource(JSONLDComposer.java:117)
	at com.epimorphics.lda.renderers.JSONLDComposer.value(JSONLDComposer.java:161)
	[maaaany lines like that...]
	at com.epimorphics.lda.renderers.JSONLDComposer.composeProperties(JSONLDComposer.java:138)
	at com.epimorphics.lda.renderers.JSONLDComposer.renderResource(JSONLDComposer.java:117)
	at com.epimorphics.lda.renderers.JSONLDComposer.value(JSONLDComposer.java:161)
	at com.epimorphics.lda.renderers.JSONLDComposer.composeProperties(JSONLDComposer.java:138)
	at com.epimorphics.lda.renderers.JSONLDComposer.renderResource(JSONLDComposer.java:117)
	at com.epimorphics.lda.renderers.JSONLDComposer.value(JSONLDComposer.java:161)
	at com.epimorphics.lda.renderers.JSONLDComposer.composeProperties(JSONLDComposer.java:138)
	at com.epimorphics.lda.renderers.JSONLDComposer.renderResource(JSONLDComposer.java:117)
2018-05-21 20:27:17,356 host 0:0:0:0:0:0:0:1:3  INFO - Response /sirene/siren/006280234.json-ld 200 448 ms

I get some output, but it has an endless loop primaryTopic/isPrimaryTopicOf between the resourceURI and the view URI that ends with the stack overflow:

{ "@context" : {"@vocab" : "http://www.epimorphics.com/vocabularies/lda#vocabFallback", "others" : "http://www.epimorphics.com/vocabularies/lda#others", "format" : "http://purl.org/dc/terms/format", "version" : "http://www.epimorphics.com/vocabularies/lda#version", "meta" : "http://www.epimorphics.com/vocabularies/lda#meta", "termBinding" : "http://www.epimorphics.com/vocabularies/lda#termBinding", "ETI" : "https://sireneld.io/vocab/sirext#ETI", "Entreprise" : "https://sireneld.io/vocab/sirext#Entreprise", "definition" : "http://purl.org/linked-data/api/vocab#definition", "extendedMetadataVersion" : "http://purl.org/linked-data/api/vocab#extendedMetadataVersion", "isPrimaryTopicOf" : "http://xmlns.com/foaf/0.1/isPrimaryTopicOf", "primaryTopic" : "http://xmlns.com/foaf/0.1/primaryTopic", "type" : {"@id" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "@type" : "http://www.w3.org/2000/01/rdf-schema#Resource"}
  }
  , "format" : "linked-data-api", "version" : "0.2A", "meta" : {"@id" : "http://localhost:8080/sirene/siren/006280234.json-ld?_view=basic", "type" : [{"@id" : "http://purl.org/linked-data/api/vocab#ItemEndpoint"}
    , {"@id" : "http://purl.org/linked-data/api/vocab#Page"}
    ], "definition" : {"@id" : "http://localhost:8080/sirene/meta/siren/_SIREN.json-ld?_view=basic"}
    , "primaryTopic" : {"@id" : "https://sireneld.io/siren/006280234", "type" : [{"@id" : "https://sireneld.io/vocab/sirext#Entreprise"}
      , {"@id" : "https://sireneld.io/vocab/sirecj#5710"}
      , {"@id" : "https://sireneld.io/vocab/sirext#ETI"}
      ], "isPrimaryTopicOf" : {"@id" : "http://localhost:8080/sirene/siren/006280234.json-ld?_view=basic", "type" : [{"@id" : "http://purl.org/linked-data/api/vocab#ItemEndpoint"}
        , {"@id" : "http://purl.org/linked-data/api/vocab#Page"}
        ], "definition" : {"@id" : "http://localhost:8080/sirene/meta/siren/_SIREN.json-ld?_view=basic"}
        , "primaryTopic" : {"@id" : "https://sireneld.io/siren/006280234", "type" : [{"@id" : "https://sireneld.io/vocab/sirext#Entreprise"}
          , {"@id" : "https://sireneld.io/vocab/sirecj#5710"}
          , {"@id" : "https://sireneld.io/vocab/sirext#ETI"}
          ], "isPrimaryTopicOf" : {"@id" : "http://localhost:8080/sirene/siren/006280234.json-ld?_view=basic", "type" : [{"@id" : "http://purl.org/linked-data/api/vocab#ItemEndpoint"}
            , {"@id" : "http://purl.org/linked-data/api/vocab#Page"}
            ], "definition" : {"@id" : "http://localhost:8080/sirene/meta/siren/_SIREN.json-ld?_view=basic"}
            , "primaryTopic" : {"@id" : "https://sireneld.io/siren/006280234", "type" : [{"@id" : "https://sireneld.io/vocab/sirext#Entreprise"}
              , {"@id" : "https://sireneld.io/vocab/sirecj#5710"}
              , {"@id" : "https://sireneld.io/vocab/sirext#ETI"}
              ], "isPrimaryTopicOf" : {"@id" : "http://localhost:8080/sirene/siren/006280234.json-ld?_view=basic", "type" : [{"@id" : "http://purl.org/linked-data/api/vocab#ItemEndpoint"}
                , {"@id" : "http://purl.org/linked-data/api/vocab#Page"}
                ], "definition" : {"@id" : "http://localhost:8080/sirene/meta/siren/_SIREN.json-ld?_view=basic"}
                , "primaryTopic" : {"@id" : "https://sireneld.io/siren/006280234", "type" : [{"@id" : "https://sireneld.io/vocab/sirext#Entreprise"}
                  , {"@id" : "https://sireneld.io/vocab/sirecj#5710"}
                  , {"@id" : "https://sireneld.io/vocab/sirext#ETI"}
                  ], "isPrimaryTopicOf" : {"@id" : "http://localhost:8080/sirene/siren/006280234.json-ld?_view=basic", "type" : [{"@id" : "http://purl.org/linked-data/api/vocab#ItemEndpoint"}
                    , {"@id" : "http://purl.org/linked-data/api/vocab#Page"}
                    ], "definition" : {"@id" : "http://localhost:8080/sirene/meta/siren/_SIREN.json-ld?_view=basic"}
                    , "primaryTopic" :
[1500 lines of that...]

[:]'[:]"[:]
PROBLEM:

Error while sending response: 'com.hp.hpl.jena.shared.WrappedException: java.lang.StackOverflowError'

I use Elda 1.4.3.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions