Bug 34753 - Continuous action on WebDAV server cause OutOfMemoryError
Summary: Continuous action on WebDAV server cause OutOfMemoryError
Status: NEW
Alias: None
Product: Slide
Classification: Unclassified
Component: Transaction Manager (show other bugs)
Version: 2.1
Hardware: PC Windows XP
: P3 normal with 5 votes (vote)
Target Milestone: ---
Assignee: Slide Developer List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-05-05 11:23 UTC by Chun Ming Ho
Modified: 2006-03-15 23:16 UTC (History)
1 user (show)



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Chun Ming Ho 2005-05-05 11:23:06 UTC
I want to use Slide as a file server to handle a continuous file transfer 
action, which I need to connect, put file, delete file and disconnect to the 
server repeatly. When I use a test program to run such action for a night, I 
find that the Slide server will throw OutOfMemory Error.
The Exception is captured as below:

http-8080-Processor5, 05-ŒÜŒŽ-2005 03:22:35, root, PUT, 201 "Created", 18000 
ms, /files/TestFile3/TestFile3.dat
05 May 2005 03:22:58 - 
org.apache.commons.transaction.file.FileResourceManager - EMERGENCY - Fatal 
error during critical commit/rollback of transaction [B@bf006
f, setting database to dirty.
05 May 2005 03:22:58 - 
org.apache.commons.transaction.file.FileResourceManager - EMERGENCY - 
java.lang.OutOfMemoryError
java.lang.OutOfMemoryError
05 May 2005 03:22:58 - org.apache.slide.transaction.SlideTransaction - 
WARNING - Commit failure: Resource manager TxContentFileStore at 
store/content  working o
n work/content Error code java.lang.OutOfMemoryError
 in Transaction 123117 xid http-8080-Processor19-1115234562203-123117- in 
thread http-8080-Processor19
java.lang.OutOfMemoryError
05 May 2005 03:22:58 - org.apache.slide.webdav.method.AbstractWebdavMethod - 
ERROR - javax.transaction.HeuristicMixedException
javax.transaction.HeuristicMixedException
        at org.apache.slide.transaction.SlideTransaction.commit
(SlideTransaction.java:332)
        at org.apache.slide.transaction.SlideTransactionManager.commit
(SlideTransactionManager.java:186)
        at org.apache.slide.common.NamespaceAccessTokenImpl.commit
(NamespaceAccessTokenImpl.java:423)
        at org.apache.slide.webdav.method.AbstractWebdavMethod.run
(AbstractWebdavMethod.java:408)
        at org.apache.slide.webdav.WebdavServlet.service
(WebdavServlet.java:155)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:157)
        at org.apache.slide.webdav.filter.LogFilter.doFilter
(LogFilter.java:141)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal
(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:540)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service
(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:799)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnecti
on(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt
(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)
javax.transaction.HeuristicMixedException
        at org.apache.slide.transaction.SlideTransaction.commit
(SlideTransaction.java:332)
        at org.apache.slide.transaction.SlideTransactionManager.commit
(SlideTransactionManager.java:186)
        at org.apache.slide.common.NamespaceAccessTokenImpl.commit
(NamespaceAccessTokenImpl.java:423)
        at org.apache.slide.webdav.method.AbstractWebdavMethod.run
(AbstractWebdavMethod.java:408)
        at org.apache.slide.webdav.WebdavServlet.service
(WebdavServlet.java:155)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:157)
        at org.apache.slide.webdav.filter.LogFilter.doFilter
(LogFilter.java:141)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal
(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:540)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service
(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:799)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnecti
on(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt
(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)
java.lang.IllegalStateException
        at org.apache.slide.transaction.SlideTransactionManager.rollback
(SlideTransactionManager.java:213)
        at org.apache.slide.common.NamespaceAccessTokenImpl.rollback
(NamespaceAccessTokenImpl.java:443)
        at org.apache.slide.webdav.method.AbstractWebdavMethod.run
(AbstractWebdavMethod.java:429)
        at org.apache.slide.webdav.WebdavServlet.service
(WebdavServlet.java:155)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:157)
        at org.apache.slide.webdav.filter.LogFilter.doFilter
(LogFilter.java:141)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal
(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:540)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service
(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:799)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnecti
on(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt
(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)
05 May 2005 03:22:59 - org.apache.slide.webdav.WebdavServlet - ERROR - 
org.apache.slide.webdav.WebdavException: Internal Server Error
org.apache.slide.webdav.WebdavException: Internal Server Error
        at org.apache.slide.webdav.method.AbstractWebdavMethod.run
(AbstractWebdavMethod.java:424)
        at org.apache.slide.webdav.WebdavServlet.service
(WebdavServlet.java:155)

And my testing program has a test loop as follows: (I use 8600 as my default 
port)
 
try {
	int loopCount = 0;
	boolean executeResult = true;
	HttpURL homeUrl = new HttpURL("http://192.168.0.21:8600/slide/");
	homeUrl.setUserinfo("root", "root");
	WebdavResource res = new WebdavResource(homeUrl);
	if(res == null) {
	    throw new PerformanceTestException("Something is Wrong!");
	}
	executeResult = executeResult & res.mkcolMethod("/slide/files/abc/");
	if (executeResult) System.out.println("Folder cannot be created.");
	executeResult = true;
	while (executeResult && loopCount < 86400) {
		long thisRunTime = System.currentTimeMillis();
		executeResult = executeResult & res.putMethod
("/slide/files/abc/def.dat", new java.io.File("def.dat"));
		executeResult = executeResult & res.deleteMethod
("/slide/files/abc/def.dat");
		loopCount++;
		System.out.print("\rloopCount: " + loopCount + " ");
		while ((System.currentTimeMillis() - thisRunTime) < 1000) {
			Thread.sleep(1000 - System.currentTimeMillis() + 
thisRunTime);
		}
	}
	executeResult = executeResult & res.deleteMethod("/slide/files/abc/");
	res.close();
} catch (Throwable t) {
	t.printStackTrace();
}

In fact I had tested to repeat actions on
Open and Close connection only
Make Collection and delete collection only
Put file only
but I still find somekind like OutOfMemoryError. It seems like that Slide will 
eat up some memory for any Transastion-related actions.

My config for Slide use default config from Slide site.
<nodestore classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
Comment 1 ChuTianXing 2006-03-16 07:16:47 UTC
I met the same problem.With none-transaction actions too