Hi, Same here. I only got those when running Stanbol in Tomcat7 (together with the LMF [1] in my case). Never had such exception when running the standalone version that uses Jetty (even with the bugs mentioned above). However I was never able to reproduce this with curl. But if this is possible it would be great (for debugging). Maybe a Bug in Jersey with very short texts? I will need to try this myself.
best Rupert On Mon, Jan 21, 2013 at 12:48 PM, Andrea Di Menna <[email protected]> wrote: > Hi Rupert, > > thank you very much for your response. > > The problem is I am also able to reproduce the error using curl. > Usually some of those requests fail and then some succeed. > > Have you ever reproduced this with Jetty using curl, i.e. not using any > intermediate client? > >> curl -X POST -H "Content-type: text/plain" --data "Paris " > http://localhost:8080/stanbol/enhancer/chain/dbpedia-keyword > > <html><head><title>Apache Tomcat/7.0.21 - Error report</title><style><!--H1 > {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} > H2 > {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} > H3 > {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} > BODY > {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B > {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} > P > {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A > {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> > </head><body><h1>HTTP Status 500 - </h1><HR size="1" > noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> > <u></u></p><p><b>description</b> <u>The server encountered an internal > error () that prevented it from fulfilling this > request.</u></p><p><b>exception</b> <pre>javax.servlet.ServletException: > java.io.IOException: Stream closed > com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:418) > com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) > com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) > javax.servlet.http.HttpServlet.service(HttpServlet.java:722) > org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96) > org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79) > org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42) > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49) > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) > org.apache.stanbol.commons.security.auth.AuthenticatingFilter$1.run(AuthenticatingFilter.java:159) > java.security.AccessController.doPrivileged(Native Method) > javax.security.auth.Subject.doAsPrivileged(Subject.java:536) > org.apache.stanbol.commons.security.auth.AuthenticatingFilter.doFilter(AuthenticatingFilter.java:155) > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) > org.apache.stanbol.commons.httpqueryheaders.impl.QueryHeadersFilter.doFilter(QueryHeadersFilter.java:75) > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:78) > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) > org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48) > org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39) > org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67) > javax.servlet.http.HttpServlet.service(HttpServlet.java:722) > org.apache.felix.http.proxy.ProxyServlet.service(ProxyServlet.java:60) > javax.servlet.http.HttpServlet.service(HttpServlet.java:722) > org.apache.sling.launchpad.base.webapp.SlingServletDelegate.service(SlingServletDelegate.java:278) > org.apache.sling.launchpad.webapp.SlingServlet.service(SlingServlet.java:174) > </pre></p><p><b>root cause</b> <pre>java.io.IOException: Stream closed > org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:308) > org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:169) > org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1025) > org.apache.commons.io.IOUtils.copy(IOUtils.java:999) > org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:218) > org.apache.stanbol.enhancer.servicesapi.impl.StreamSource.getData(StreamSource.java:136) > org.apache.stanbol.enhancer.contentitem.inmemory.InMemoryContentItemFactory.createBlob(InMemoryContentItemFactory.java:80) > org.apache.stanbol.enhancer.servicesapi.impl.AbstractContentItemFactory.createContentItem(AbstractContentItemFactory.java:121) > org.apache.stanbol.enhancer.servicesapi.impl.AbstractContentItemFactory.createContentItem(AbstractContentItemFactory.java:90) > org.apache.stanbol.enhancer.jersey.reader.ContentItemReader.readFrom(ContentItemReader.java:261) > org.apache.stanbol.enhancer.jersey.reader.ContentItemReader.readFrom(ContentItemReader.java:69) > com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:474) > > > 2013/1/21 Rupert Westenthaler <[email protected]> > >> Hi, >> >> I think the stacktrace originates from an Stanbol Enhancer request. I >> know this trace very well, as I have seen it several times. However in >> all those cases the exceptions where caused by problems with the >> client side application. Once this was caused by bad Exception >> Handling on the client side causing the Apache HttpClient to re-use >> still referenced connections of the ConnectionPool. An other time it >> was because of wrong "Content-Length" header information causing the >> server to close the stream early (e.g. if the Bytes written by >> Charset1 are not the one sent by the client because he uses Charset2). >> In addition such exceptions might also happen if the client simple >> cancels the request before all data where sent. >> >> This does not mean that there is no problem with Stanbol, but it is >> very unlikely, as the only think that Stanbol does up to the point >> where the Exception is thrown is to call 'IOUtils.toByteArray(in)' on >> the InputStream prased by the JAX-RS MessageBodyReader#readFrom(..) >> method. >> >> best >> Rupert >> >> >> On Mon, Jan 21, 2013 at 11:52 AM, Andrea Di Menna <[email protected]> >> wrote: >> > Hi all, >> > >> > I have an issue with the enhancer engine on Tomcat7. >> > Trying to access a dbpedia entityhub I randomly get error 500 from a >> > Stanbol instance. >> > >> > The tomcat7 error log reports: >> > >> > java.io.IOException: Stream closed >> > at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:308) >> > at >> > >> org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:169) >> > at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1025) >> > at org.apache.commons.io.IOUtils.copy(IOUtils.java:999) >> > at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:218) >> > at >> > >> org.apache.stanbol.enhancer.servicesapi.impl.StreamSource.getData(StreamSource.java:136) >> > at >> > >> org.apache.stanbol.enhancer.contentitem.inmemory.InMemoryContentItemFactory.createBlob(InMemoryContentItemFactory.java:80) >> > at >> > >> org.apache.stanbol.enhancer.servicesapi.impl.AbstractContentItemFactory.createContentItem(AbstractContentItemFactory.java:121) >> > at >> > >> org.apache.stanbol.enhancer.servicesapi.impl.AbstractContentItemFactory.createContentItem(AbstractContentItemFactory.java:90) >> > at >> > >> org.apache.stanbol.enhancer.jersey.reader.ContentItemReader.readFrom(ContentItemReader.java:261) >> > at >> > >> org.apache.stanbol.enhancer.jersey.reader.ContentItemReader.readFrom(ContentItemReader.java:69) >> > at >> > >> com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:474) >> > >> > It looks like the InputStream gets closed when Stanbol is trying to >> create >> > the ContentItem from the request. >> > The input text is a very short string. >> > >> > My feeling is that the request's InputStream is closed when the >> > ContentItemFactory is reading it. >> > >> > Any suggestion? >> > >> > Regards >> > Andrea >> >> >> >> -- >> | Rupert Westenthaler [email protected] >> | Bodenlehenstraße 11 ++43-699-11108907 >> | A-5500 Bischofshofen >> -- | Rupert Westenthaler [email protected] | Bodenlehenstraße 11 ++43-699-11108907 | A-5500 Bischofshofen
