Re: Deadlocks in the Filestore of Silde 2.1
"Arne v.Irmer" <[email protected]> Wed, 18 Apr 2007 16:57:53 +0200
| Newsgroups | gmane.comp.jakarta.slide.user |
|---|---|
| Message-ID | <[email protected]> |
Hi Oliver, thank you for widening my view on that problem. To understand the mechanism of locks I made a small test with slide 2.1. And maybe I found a bug in the locking mechanism that could cause my problem: 1. I downloaded a big file from a test slide with a client that is slowdowned. 2. From another client I do a write access (I tried to delete the file) -> that was locked. (ok!) I saw a process waiting with the same stacktrace in jconsole as I found on my operational system when it stops working. 3. Now the client that wants to delete gives up (timeout etc.) In jconsole one can see, that lock wasn't removed. One process is waiting, even if the reading client gives up, too. 4. Any write access to that file produces a waiting process. If the number of 100 waiting processes is reached, the tomcat goes offline. Maybe this works with a readlock, too. But I don't know how to initiate readlock. ;-) Yours Arne Oliver Zeigermann schrieb: > Hi Arne! > > The stack trace tells you that another thread has the global > read/write lock. So, correctly speaking this is a "live lock". The > reason most likely is a thread that still runs and has forgotten to > release this lock. > > Having said this, even switching to a deadlock free solution will not > help, as you have no deadlocks here. > > Cheers > > Oliver > > 2007/4/17, Arne v.Irmer <[email protected]>: >> Hi, >> we are using slide in our e-learning platform >> http://ews2.uni-dortmund.de in a production environment. We get into >> deep trouble with deadlocks in Slide! >> I checked out Silde 2.2pre1. In the RELEASE-NOTES-2.2 there is the >> sentence: >> "- New option for a fine grained, deadlock-less locking scheme" >> My question is: >> - Should I change to 2.2pre1 for my productive environment? How can I >> switch back if we discover other problems with this pre-release? >> - Is there a patch for version 2.1. that fixes these deadlocks? >> >> Please help. >> Thanks in advance >> Arne v.Irmer >> >> Our configuration: >> Slide 2.1 with fixed hasmap "suspendedLocks" in >> org.apache.slide.store.ExtendedStore. >> using a filestore in Tomcat 5.5 >> >> Here are some stacktraces from the jconsole in the case of the >> deadlocks: >> >> Name: http-129.217.205.43-8080-Processor3 >> State: TIMED_WAITING on >> org.apache.commons.transaction.locking.GenericLock@76e9f537 >> Total blocked: 273 Total waited: 332 >> >> Stack trace: >> java.lang.Object.wait(Native Method) >> org.apache.commons.transaction.locking.GenericLock.acquire(GenericLock.java:241) >> >> org.apache.commons.transaction.locking.GenericLock.acquire(GenericLock.java:165) >> >> org.apache.slide.webdav.method.AbstractWebdavMethod.assureGlobalWriteLock(AbstractWebdavMethod.java:847) >> >> org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:362) >> >> org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:155) >> javax.servlet.http.HttpServlet.service(HttpServlet.java:802) >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) >> >> org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.java:141) >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) >> >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) >> >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) >> >> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524) >> >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) >> >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) >> >> org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:419) >> >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) >> >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) >> >> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) >> >> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) >> >> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) >> >> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) >> >> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) >> >> java.lang.Thread.run(Thread.java:595) >> >> Name: http-129.217.205.43-8080-Processor3 >> State: TIMED_WAITING on >> org.apache.commons.transaction.locking.GenericLock@667aeb85 >> Total blocked: 44 Total waited: 80 >> >> Stack trace: >> java.lang.Object.wait(Native Method) >> org.apache.commons.transaction.locking.GenericLock.acquire(GenericLock.java:241) >> >> org.apache.commons.transaction.locking.GenericLock.acquire(GenericLock.java:165) >> >> org.apache.slide.webdav.method.AbstractWebdavMethod.assureGlobalReadLock(AbstractWebdavMethod.java:838) >> >> org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:360) >> >> org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:155) >> javax.servlet.http.HttpServlet.service(HttpServlet.java:802) >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) >> >> org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.java:141) >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) >> >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) >> >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) >> >> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524) >> >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) >> >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) >> >> org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:419) >> >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) >> >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) >> >> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) >> >> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) >> >> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) >> >> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) >> >> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) >> >> java.lang.Thread.run(Thread.java:595) >> >> -- >> Dipl.-Phys. Arne v.Irmer >> Medienzentrum UniversitÀt Dortmund >> Emil-Figge-StraÃe 50 >> 44227 Dortmund >> Tel.: ++49 231 755 7127 >> Fax : ++49 231 755 4597 >> -- Dipl.-Phys. Arne v.Irmer Medienzentrum UniversitÀt Dortmund Emil-Figge-StraÃe 50 44227 Dortmund Tel.: ++49 231 755 7127 Fax : ++49 231 755 4597