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