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

Andy Seaborne commented on JENA-515:
------------------------------------

The issue is that the one request isn't the sole cause of the problem.  Heap is 
a global resource for the whole JVM and it can be that no one single part of 
the system is responsible for running out of memory; it's the combination of 
uses of heap together being too much for the heap provided.  When heap runs 
out, all active threads in the system are damaged.  The validity of the system 
is not known.

What would better address your requirement for running with a small heap is to 
tune down some of the internal parameters which are currently fixed (it can be 
done but only in java currently).

BTW as part of JENA-516, doPost has been rewritten.
                
> Incorrectly error message "Currently in a transaction" when querying SPARQL
> ---------------------------------------------------------------------------
>
>                 Key: JENA-515
>                 URL: https://issues.apache.org/jira/browse/JENA-515
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: Fuseki, TDB
>    Affects Versions: TDB 0.10.1
>            Reporter: Knut-Olav Hoven
>            Assignee: Stephen Allen
>
> This has happened after a OutOfMemoryError during import (batched import of 
> 1000 resources per request).
> Fetching entire database with curl works OK:
>  http://localhost:3030/ds/data?graph=sift-tprogram
> When querying with SPARQL I get an 500 error "Currently in a transaction".
> No other clients are active.
> Log output:
> {code}
> 15:27:01 INFO  Fuseki               :: [73] GET 
> http://localhost:3030/ds/query?query=PREFIX+sift%3A+%3Chttp%3A%2F%2Fgluon.nrk.no%2F2013%2Fsift%23%3E%0D%0APREFIX+prog%3A+%3Chttp%3A%2F%2Fgluon.nrk.no%2F2013%2Fsift-program%23%3E%0D%0A%0D%0ASELECT+*%0D%0AFROM+%3Chttp%3A%2F%2Flocalhost%3A3030%2Fds%2Fdata%2Fsift-tprogram%3E%0D%0A%7B%0D%0A%3Fs+sift%3Akeys+%222005%2F02952%22+.%0D%0A%3Fs+%3Fp+%3Fo%0D%0A%7D%0D%0ALIMIT+1000&output=text&stylesheet=%2Fxml-to-html.xsl&force-accept=text%2Fplain
> 15:27:01 INFO  Fuseki               :: [73] Query = PREFIX sift: 
> <http://gluon.nrk.no/2013/sift#>  PREFIX prog: 
> <http://gluon.nrk.no/2013/sift-program#>    SELECT *  FROM 
> <http://localhost:3030/ds/data/sift-tprogram>  {  ?s sift:keys "2005/02952" . 
>  ?s ?p ?o  }  LIMIT 1000
> 15:27:02 WARN  Fuseki               :: [73] RC = 500 : Currently in a 
> transaction (location:/home/n21759/var/jena-fuseki/db/)
> com.hp.hpl.jena.sparql.JenaTransactionException: Currently in a transaction 
> (location:/home/n21759/var/jena-fuseki/db/)
>         at 
> com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction.checkNotActive(DatasetGraphTransaction.java:125)
>         at 
> com.hp.hpl.jena.sparql.core.DatasetGraphTrackActive.begin(DatasetGraphTrackActive.java:44)
>         at 
> org.apache.jena.fuseki.servlets.HttpAction.beginRead(HttpAction.java:118)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_Query.execute(SPARQL_Query.java:234)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_Query.executeWithParameter(SPARQL_Query.java:193)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_Query.perform(SPARQL_Query.java:78)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_ServletBase.executeLifecycle(SPARQL_ServletBase.java:185)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_ServletBase.executeAction(SPARQL_ServletBase.java:166)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_ServletBase.execCommonWorker(SPARQL_ServletBase.java:154)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommon(SPARQL_ServletBase.java:73)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_Query.doGet(SPARQL_Query.java:59)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>         at 
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1448)
>         at 
> org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:82)
>         at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:294)
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229)
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>         at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>         at org.eclipse.jetty.server.Server.handle(Server.java:370)
>         at 
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
>         at 
> org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
>         at 
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
>         at 
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
>         at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
>         at 
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
>         at 
> org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
>         at 
> org.eclipse.jetty.server.nio.BlockingChannelConnector$BlockingChannelEndPoint.run(BlockingChannelConnector.java:298)
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>         at java.lang.Thread.run(Thread.java:722)
> 15:27:02 INFO  Fuseki               :: [73] 500 Currently in a transaction 
> (location:/home/n21759/var/jena-fuseki/db/) (601 ms) 
> {code}
> Log message of the OutOfMemoryError:
> {code}
> java.lang.OutOfMemoryError: Java heap space
> Dumping heap to java_pid28296.hprof ...
> Heap dump file created [280365745 bytes in 2.986 secs]
> 15:10:27 WARN  HttpAction           :: Transaction still active in endWriter 
> - no commit or abort seen (forced abort)
> 15:10:28 WARN  HttpAction           :: Exception in forced abort (trying to 
> continue)
> 15:10:40 WARN  Fuseki               :: [66] RC = 500 : Java heap space
> java.lang.OutOfMemoryError: Java heap space
>         at java.util.Arrays.copyOf(Arrays.java:2367)
>         at 
> java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)
>         at 
> java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
>         at 
> java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415)
>         at java.lang.StringBuffer.append(StringBuffer.java:237)
>         at java.io.StringWriter.write(StringWriter.java:112)
>         at java.io.PrintWriter.write(PrintWriter.java:456)
>         at java.io.PrintWriter.write(PrintWriter.java:473)
>         at java.io.PrintWriter.print(PrintWriter.java:603)
>         at java.io.PrintWriter.println(PrintWriter.java:756)
>         at java.lang.Throwable$WrappedPrintWriter.println(Throwable.java:763)
>         at java.lang.Throwable.printStackTrace(Throwable.java:657)
>         at java.lang.Throwable.printStackTrace(Throwable.java:720)
>         at 
> org.apache.log4j.DefaultThrowableRenderer.render(DefaultThrowableRenderer.java:60)
>         at 
> org.apache.log4j.spi.ThrowableInformation.getThrowableStrRep(ThrowableInformation.java:87)
>         at 
> org.apache.log4j.spi.LoggingEvent.getThrowableStrRep(LoggingEvent.java:413)
>         at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:313)
>         at org.apache.log4j.WriterAppender.append(WriterAppender.java:162)
>         at 
> org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
>         at 
> org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
>         at org.apache.log4j.Category.callAppenders(Category.java:206)
>         at org.apache.log4j.Category.forcedLog(Category.java:391)
>         at org.apache.log4j.Category.log(Category.java:856)
>         at org.slf4j.impl.Log4jLoggerAdapter.warn(Log4jLoggerAdapter.java:479)
>         at org.apache.jena.atlas.logging.Log.warn(Log.java:160)
>         at org.apache.jena.atlas.logging.Log.warn(Log.java:155)
>         at 
> org.apache.jena.fuseki.servlets.HttpAction.endWrite(HttpAction.java:156)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST_RW.doPost(SPARQL_REST_RW.java:97)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST.doPost$(SPARQL_REST.java:246)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST.dispatch(SPARQL_REST.java:203)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST.perform(SPARQL_REST.java:190)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_ServletBase.executeLifecycle(SPARQL_ServletBase.java:185)
> 15:10:41 INFO  Fuseki               :: [66] 500 Java heap space (73.238 s) 
> 15:10:41 INFO  Fuseki               :: [67] POST 
> http://localhost:3030/ds/data?graph=sift-tprogram
> 15:11:06 WARN  Fuseki               :: [67] RC = 500 : Java heap space
> java.lang.OutOfMemoryError: Java heap space
>         at java.util.Arrays.copyOfRange(Arrays.java:2694)
>         at java.lang.String.<init>(String.java:203)
>         at java.lang.StringBuilder.toString(StringBuilder.java:405)
>         at 
> org.apache.jena.riot.tokens.TokenizerText.readIRI(TokenizerText.java:477)
>         at 
> org.apache.jena.riot.tokens.TokenizerText.parseToken(TokenizerText.java:192)
>         at 
> org.apache.jena.riot.tokens.TokenizerText.hasNext(TokenizerText.java:89)
>         at 
> org.apache.jena.atlas.iterator.PeekIterator.fill(PeekIterator.java:50)
>         at 
> org.apache.jena.atlas.iterator.PeekIterator.next(PeekIterator.java:92)
>         at org.apache.jena.riot.lang.LangEngine.nextToken(LangEngine.java:99)
>         at org.apache.jena.riot.lang.LangEngine.expect(LangEngine.java:143)
>         at 
> org.apache.jena.riot.lang.LangEngine.expectOrEOF(LangEngine.java:128)
>         at 
> org.apache.jena.riot.lang.LangTurtleBase.expectEndOfTriplesTurtle(LangTurtleBase.java:258)
>         at 
> org.apache.jena.riot.lang.LangTurtle.expectEndOfTriples(LangTurtle.java:49)
>         at 
> org.apache.jena.riot.lang.LangTurtleBase.triples(LangTurtleBase.java:243)
>         at 
> org.apache.jena.riot.lang.LangTurtleBase.triplesSameSubject(LangTurtleBase.java:186)
>         at 
> org.apache.jena.riot.lang.LangTurtle.oneTopLevelElement(LangTurtle.java:44)
>         at 
> org.apache.jena.riot.lang.LangTurtleBase.runParser(LangTurtleBase.java:90)
>         at org.apache.jena.riot.lang.LangBase.parse(LangBase.java:42)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST.parse(SPARQL_REST.java:417)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST.parseBody(SPARQL_REST.java:406)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST_RW.doPost(SPARQL_REST_RW.java:87)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST.doPost$(SPARQL_REST.java:246)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST.dispatch(SPARQL_REST.java:203)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST.perform(SPARQL_REST.java:190)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_ServletBase.executeLifecycle(SPARQL_ServletBase.java:185)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_ServletBase.executeAction(SPARQL_ServletBase.java:166)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_ServletBase.execCommonWorker(SPARQL_ServletBase.java:154)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommon(SPARQL_ServletBase.java:73)
>         at 
> org.apache.jena.fuseki.servlets.SPARQL_REST.service(SPARQL_REST.java:180)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>         at 
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1448)
> 15:11:06 INFO  Fuseki               :: [67] 500 Java heap space (25.723 s) 
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to