Hi Thomas, thank you for your fast reply. Please see comments below.
On Tue, 9 Feb 2010 08:57:06 +0100, Thomas Müller <[email protected]> wrote: > Hi, > >> the clients connect with RMI. > > I'm not sure, but that might be the problem. > > To analyze the problem, I suggest to use the command line option > -XX:+HeapDumpOnOutOfMemoryError and then use a memory analysis tool > such as the Eclipse Memory Analyzer (MAT): http://www.eclipse.org/mat > > There is an alternative to using RMI: > http://wiki.apache.org/jackrabbit/RemoteAccess#DavEx > I do know about the DavEx alternative, but the way I'm using the API, the DavEx implementation has been a lot slower than the RMI implementation (in the 1.6.0 version of Jackrabbit at least). Anyway, I did the same with a DavEx connection instead of RMI but the problem remains. It takes a while to transfer the iso file, memory stays rather constant on both client and server, then, when the file is complete, the memory of the Jackrabbit process increases rapidly until it hits an OutOfMemoryError. Stacktrace below. The Memory Analyzer has only one leak suspect: The thread org.apache.tomcat.util.threads.ThreadWithAttributes @ 0x45dd178 http-8080-Processor24 keeps local variables with total size 134.502.112 (85,57%) bytes. The memory is accumulated in one instance of "char[]" loaded by "<system class loader>".Keywords char[] Is there any other information I can provide you with? Best regards, Johannes Exception in thread "Timer-1" java.lang.IllegalStateException: this writer hit an OutOfMemoryError; cannot com mit at org.apache.lucene.index.IndexWriter.prepareCommit(IndexWriter.java:3353) at org.apache.lucene.index.IndexWriter.commit(IndexWriter.java:3408) at org.apache.jackrabbit.core.query.lucene.AbstractIndex.commit(AbstractIndex.java:363) at org.apache.jackrabbit.core.query.lucene.VolatileIndex.commit(VolatileIndex.java:141) at org.apache.jackrabbit.core.query.lucene.PersistentIndex.copyIndex(PersistentIndex.java:105) at org.apache.jackrabbit.core.query.lucene.MultiIndex$VolatileCommit.execute(MultiIndex.java:1984) at org.apache.jackrabbit.core.query.lucene.MultiIndex.executeAndLog(MultiIndex.java:1000) at org.apache.jackrabbit.core.query.lucene.MultiIndex.commitVolatileIndex(MultiIndex.java:1048) at org.apache.jackrabbit.core.query.lucene.MultiIndex.flush(MultiIndex.java:893) at org.apache.jackrabbit.core.query.lucene.MultiIndex.checkFlush(MultiIndex.java:1164) at org.apache.jackrabbit.core.query.lucene.MultiIndex.access$100(MultiIndex.java:80) at org.apache.jackrabbit.core.query.lucene.MultiIndex$1.run(MultiIndex.java:317) at java.util.TimerThread.mainLoop(Timer.java:512) at java.util.TimerThread.run(Timer.java:462) 09.02.2010 09:37:57 *ERROR* SearchManager: Error indexing node. (SearchManager.java, line 490) java.io.IOException: Java heap space at org.apache.jackrabbit.core.query.lucene.Util.createIOException(Util.java:114) at org.apache.jackrabbit.core.query.lucene.AbstractIndex.addDocuments(AbstractIndex.java:199) at org.apache.jackrabbit.core.query.lucene.VolatileIndex.commitPending(VolatileIndex.java:171) at org.apache.jackrabbit.core.query.lucene.VolatileIndex.addDocuments(VolatileIndex.java:82) at org.apache.jackrabbit.core.query.lucene.MultiIndex$AddNode.execute(MultiIndex.java:1599) at org.apache.jackrabbit.core.query.lucene.MultiIndex.executeAndLog(MultiIndex.java:1000) at org.apache.jackrabbit.core.query.lucene.MultiIndex.update(MultiIndex.java:429) at org.apache.jackrabbit.core.query.lucene.SearchIndex.updateNodes(SearchIndex.java:588) at org.apache.jackrabbit.core.SearchManager.onEvent(SearchManager.java:486) at org.apache.jackrabbit.core.observation.EventConsumer.consumeEvents(EventConsumer.java:244) at org.apache.jackrabbit.core.observation.ObservationDispatcher.dispatchEvents(ObservationDispatcher.j ava:201) at org.apache.jackrabbit.core.observation.EventStateCollection.dispatch(EventStateCollection.java:464) at org.apache.jackrabbit.core.observation.DelegatingObservationDispatcher.dispatch(DelegatingObservati onDispatcher.java:127) at org.apache.jackrabbit.core.observation.DelegatingObservationDispatcher.dispatchEvents(DelegatingObs ervationDispatcher.java:99) at org.apache.jackrabbit.core.observation.EventStateCollection.dispatch(EventStateCollection.java:464) at org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:760) at org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:1115) at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:351) at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:326) at org.apache.jackrabbit.core.version.AbstractVersionManager$WriteOperation.save(AbstractVersionManage r.java:189) at org.apache.jackrabbit.core.version.AbstractVersionManager.checkin(AbstractVersionManager.java:442) at org.apache.jackrabbit.core.version.VersionManagerImpl$2.run(VersionManagerImpl.java:290) at org.apache.jackrabbit.core.version.VersionManagerImpl$DynamicESCFactory.doSourced(VersionManagerImp l.java:586) at org.apache.jackrabbit.core.version.VersionManagerImpl.checkin(VersionManagerImpl.java:281) at org.apache.jackrabbit.core.version.XAVersionManager.checkin(XAVersionManager.java:180) at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:3367) at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:3346) at org.apache.jackrabbit.webdav.jcr.VersionControlledItemCollection.checkin(VersionControlledItemColle ction.java:268) at org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.doCheckin(AbstractWebdavServlet.java:997) at org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.execute(AbstractWebdavServlet.java:292) at org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.service(AbstractWebdavServlet.java:196) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BasePro tocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515) at java.lang.StringBuffer.append(StringBuffer.java:306) at org.apache.jackrabbit.core.query.lucene.LazyTextExtractorField.stringValue(LazyTextExtractorField.j ava:91) at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:109) at org.apache.lucene.index.DocFieldConsumersPerField.processFields(DocFieldConsumersPerField.java:36) at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java: 234) at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:765) at org.apache.lucene.index.DocumentsWriter.addDocument(DocumentsWriter.java:743) at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1917) at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1895) at org.apache.jackrabbit.core.query.lucene.AbstractIndex$1.call(AbstractIndex.java:183) at org.apache.jackrabbit.core.query.lucene.DynamicPooledExecutor$1.call(DynamicPooledExecutor.java:109 ) at EDU.oswego.cs.dl.util.concurrent.FutureResult$1.run(Unknown Source) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source) ... 1 more
