|
List Info
Thread: Deadlocks in the Filestore of Silde 2.1
|
|
| Deadlocks in the Filestore of Silde 2.1 |
  Germany |
2007-04-17 10:08:30 |
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(G
enericLock.java:241)
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalWriteLock(AbstractWebdavMethod.java:847)
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:362)
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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(G
enericLock.java:241)
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalReadLock(AbstractWebdavMethod.java:838)
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:360)
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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
|
|
| Re: Deadlocks in the Filestore of Silde
2.1 |

|
2007-04-17 13:51:22 |
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 <Arne.vonIrmer uni-dortmund.de>:
> 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(G
enericLock.java:241)
>
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
>
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalWriteLock(AbstractWebdavMethod.java:847)
>
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:362)
>
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
>
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
>
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
>
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
>
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
>
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
>
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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(G
enericLock.java:241)
>
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
>
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalReadLock(AbstractWebdavMethod.java:838)
>
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:360)
>
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
>
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
>
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
>
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
>
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
>
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
>
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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
>
------------------------------------------------------------
---------
To unsubscribe, e-mail: slide-user-unsubscribe jakarta.apache.org
For additional commands, e-mail: slide-user-help jakarta.apache.org
|
|
| Re: Deadlocks in the Filestore of Silde
2.1 |

|
2007-04-17 14:01:42 |
I was just having a look at the 2.2 code and it looks that
you can
even switch off locking completely. Otherwise the locking
code in 2.2
looks much better than the code in 2.1
Oliver
2007/4/17, Oliver Zeigermann <oliver zeigermann.de>:
> 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 <Arne.vonIrmer uni-dortmund.de>:
> > 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(G
enericLock.java:241)
> >
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
> >
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalWriteLock(AbstractWebdavMethod.java:847)
> >
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:362)
> >
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
> >
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
> >
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
> >
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
> >
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
> >
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
> >
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
> >
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
> >
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
> >
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
> >
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
> >
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
> >
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
> >
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
> >
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
> >
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
> >
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
> >
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
> >
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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(G
enericLock.java:241)
> >
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
> >
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalReadLock(AbstractWebdavMethod.java:838)
> >
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:360)
> >
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
> >
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
> >
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
> >
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
> >
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
> >
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
> >
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
> >
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
> >
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
> >
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
> >
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
> >
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
> >
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
> >
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
> >
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
> >
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
> >
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
> >
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
> >
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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
> >
>
------------------------------------------------------------
---------
To unsubscribe, e-mail: slide-user-unsubscribe jakarta.apache.org
For additional commands, e-mail: slide-user-help jakarta.apache.org
|
|
| Re: Deadlocks in the Filestore of Silde
2.1 |
  Germany |
2007-04-18 09:57:53 |
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 <Arne.vonIrmer uni-dortmund.de>:
>> 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(G
enericLock.java:241)
>>
>>
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
>>
>>
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalWriteLock(AbstractWebdavMethod.java:847)
>>
>>
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:362)
>>
>>
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
>>
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
>>
>>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>>
>>
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
>>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
>>
>>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>>
>>
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
>>
>>
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
>>
>>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
>>
>>
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
>>
>>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
>>
>>
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
>>
>>
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
>>
>>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
>>
>>
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
>>
>>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
>>
>>
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
>>
>>
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
>>
>>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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(G
enericLock.java:241)
>>
>>
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
>>
>>
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalReadLock(AbstractWebdavMethod.java:838)
>>
>>
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:360)
>>
>>
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
>>
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
>>
>>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>>
>>
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
>>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
>>
>>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>>
>>
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
>>
>>
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
>>
>>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
>>
>>
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
>>
>>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
>>
>>
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
>>
>>
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
>>
>>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
>>
>>
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
>>
>>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
>>
>>
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
>>
>>
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
>>
>>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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
|
|
| Re: Deadlocks in the Filestore of Silde
2.1 |
  Germany |
2007-04-18 10:07:45 |
Hi Oliver,
how can I switch off locking and what happens in the case of
a
concurrent file access?
Might it be a good idea to replace the locking code of 2.1
with code of 2.2?
Yours
Arne
Oliver Zeigermann schrieb:
> I was just having a look at the 2.2 code and it looks
that you can
> even switch off locking completely. Otherwise the
locking code in 2.2
> looks much better than the code in 2.1
>
> Oliver
>
> 2007/4/17, Oliver Zeigermann <oliver zeigermann.de>:
>> 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 <Arne.vonIrmer uni-dortmund.de>:
>> > 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(G
enericLock.java:241)
>>
>> >
>>
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
>>
>> >
>>
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalWriteLock(AbstractWebdavMethod.java:847)
>>
>> >
>>
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:362)
>>
>> >
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
>> >
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>> >
>>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
>>
>> >
>>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>>
>> >
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
>> >
>>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
>>
>> >
>>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>>
>> >
>>
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
>>
>> >
>>
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
>>
>> >
>>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
>>
>> >
>>
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
>>
>> >
>>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
>>
>> >
>>
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
>>
>> >
>>
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
>>
>> >
>>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
>>
>> >
>>
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
>>
>> >
>>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
>>
>> >
>>
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
>>
>> >
>>
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
>>
>> >
>>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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(G
enericLock.java:241)
>>
>> >
>>
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
>>
>> >
>>
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalReadLock(AbstractWebdavMethod.java:838)
>>
>> >
>>
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:360)
>>
>> >
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
>> >
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>> >
>>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
>>
>> >
>>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>>
>> >
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
>> >
>>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
>>
>> >
>>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
>>
>> >
>>
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
>>
>> >
>>
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
>>
>> >
>>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
>>
>> >
>>
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
>>
>> >
>>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
>>
>> >
>>
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
>>
>> >
>>
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
>>
>> >
>>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
>>
>> >
>>
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
>>
>> >
>>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
>>
>> >
>>
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
>>
>> >
>>
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
>>
>> >
>>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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
------------------------------------------------------------
---------
To unsubscribe, e-mail: slide-user-unsubscribe jakarta.apache.org
For additional commands, e-mail: slide-user-help jakarta.apache.org
|
|
| Re: Deadlocks in the Filestore of Silde
2.1 |

|
2007-04-18 13:57:15 |
Hi Arne!
Your observation really is interesting. Any idea why the
request is
not terminated even if the client finally gives up?
If this really is the case, even my non-blocking
"solution" would not
do, as the non-blocking lock still remains. A better
solution would be
a lock that times out after some time. AFAIK there is
nothing simliar
implemented, yet.
You can switch off locking by setting the mode to
"none". In that case
the underlying store is responsible for all locking. If it
is a DB
that should be ok, though.
HTH
Oliver
2007/4/18, Arne v.Irmer <Arne.vonIrmer uni-dortmund.de>:
> Hi Oliver,
> how can I switch off locking and what happens in the
case of a
> concurrent file access?
> Might it be a good idea to replace the locking code of
2.1 with code of 2.2?
>
> Yours
> Arne
>
> Oliver Zeigermann schrieb:
> > I was just having a look at the 2.2 code and it
looks that you can
> > even switch off locking completely. Otherwise the
locking code in 2.2
> > looks much better than the code in 2.1
> >
> > Oliver
> >
> > 2007/4/17, Oliver Zeigermann <oliver zeigermann.de>:
> >> 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 <Arne.vonIrmer uni-dortmund.de>:
> >> > 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(G
enericLock.java:241)
> >>
> >> >
> >>
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
> >>
> >> >
> >>
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalWriteLock(AbstractWebdavMethod.java:847)
> >>
> >> >
> >>
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:362)
> >>
> >> >
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
> >> >
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >> >
> >>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
> >>
> >> >
> >>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
> >>
> >> >
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
> >> >
> >>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
> >>
> >> >
> >>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
> >>
> >> >
> >>
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
> >>
> >> >
> >>
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
> >>
> >> >
> >>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
> >>
> >> >
> >>
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
> >>
> >> >
> >>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
> >>
> >> >
> >>
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
> >>
> >> >
> >>
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
> >>
> >> >
> >>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
> >>
> >> >
> >>
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
> >>
> >> >
> >>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
> >>
> >> >
> >>
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
> >>
> >> >
> >>
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
> >>
> >> >
> >>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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(G
enericLock.java:241)
> >>
> >> >
> >>
org.apache.commons.transaction.locking.GenericLock.acquire(G
enericLock.java:165)
> >>
> >> >
> >>
org.apache.slide.webdav.method.AbstractWebdavMethod.assureGl
obalReadLock(AbstractWebdavMethod.java:838)
> >>
> >> >
> >>
org.apache.slide.webdav.method.AbstractWebdavMethod.run(Abst
ractWebdavMethod.java:360)
> >>
> >> >
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.
java:155)
> >> >
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >> >
> >>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:252)
> >>
> >> >
> >>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
> >>
> >> >
org.apache.slide.webdav.filter.LogFilter.doFilter(LogFilter.
java:141)
> >> >
> >>
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:202)
> >>
> >> >
> >>
org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:173)
> >>
> >> >
> >>
org.apache.catalina.core.StandardWrapperValve.invoke(Standar
dWrapperValve.java:213)
> >>
> >> >
> >>
org.apache.catalina.core.StandardContextValve.invoke(Standar
dContextValve.java:178)
> >>
> >> >
> >>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
uthenticatorBase.java:524)
> >>
> >> >
> >>
org.apache.catalina.core.StandardHostValve.invoke(StandardHo
stValve.java:126)
> >>
> >> >
> >>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
rtValve.java:105)
> >>
> >> >
> >>
org.apache.catalina.authenticator.SingleSignOn.invoke(Single
SignOn.java:419)
> >>
> >> >
> >>
org.apache.catalina.core.StandardEngineValve.invoke(Standard
EngineValve.java:107)
> >>
> >> >
> >>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
apter.java:148)
> >>
> >> >
> >>
org.apache.coyote.http11.Http11Processor.process(Http11Proce
ssor.java:799)
> >>
> >> >
> >>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
ler.processConnection(Http11Protocol.java:705)
> >>
> >> >
> >>
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo
lTcpEndpoint.java:527)
> >>
> >> >
> >>
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
> >>
> >> >
> >>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
n(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
>
>
------------------------------------------------------------
---------
> To unsubscribe, e-mail: slide-user-unsubscribe jakarta.apache.org
> For additional commands, e-mail: slide-user-help jakarta.apache.org
>
>
------------------------------------------------------------
---------
To unsubscribe, e-mail: slide-user-unsubscribe jakarta.apache.org
For additional commands, e-mail: slide-user-help jakarta.apache.org
|
|
| Oracle CLOB patch |

|
2007-04-20 02:06:43 |
Hi,
We often use the Oracle as a store. Some of our properties
are quite
long >4000 bytes so we changed the PROPERTY_VALUE field
to be a CLOB.
However we were still getting errors ( ORA-01461: can bind
a LONG value
only for insert into a LONG column).
It turns out that the temporary table being created in
Oracle was
causing this error - so splitting the SQL into a SELECT than
an INSERT
provided the solution.
Here's the patch we used (we're actually using the 2.1
branch but this
patch should work against the HEAD).
Regards,
Justin.
--- StandardRDBMSAdapter.java 2007-04-20
16:53:27.000000000 +1000
+++ StandardRDBMSAdapter2.java 2007-04-20
16:58:15.000000000 +1000
 -640,28
+640,54 
}
}
- public void createRevisionDescriptor(Connection
connection, Uri uri, NodeRevisionDescriptor
revisionDescriptor)
+ public void createRevisionDescriptor(Connection
connection, Uri uri, NodeRevisionDescriptor
revisionDescriptor)
throws ServiceAccessException {
PreparedStatement statement = null;
try {
assureVersionInfo(connection, uri,
revisionDescriptor);
- createVersionLabels(connection, uri,
revisionDescriptor);
+
+ for (Enumeration labels =
revisionDescriptor.enumerateLabels();
labels.hasMoreElements();) {
+ long labelId = assureLabelId(connection,
(String) labels.nextElement());
+ try {
+ statement =
+ connection.prepareStatement(
+ "insert into
VERSION_LABELS (VERSION_ID, LABEL_ID) select VERSION_ID, ?
from VERSION_HISTORY vh, URI u where vh.URI_ID = u.URI_ID
and u.URI_STRING = ? and vh.REVISION_NO = ?");
+ statement.setLong(1, labelId);
+ statement.setString(2,
uri.toString());
+ statement.setString(3,
revisionDescriptor.getRevisionNumber().toString());
+ statement.executeUpdate();
+ } finally {
+ close(statement);
+ } }
for (Enumeration properties =
revisionDescriptor.enumerateProperties();
properties.hasMoreElements();) {
+ NodeProperty property = (NodeProperty)
properties.nextElement();
+ // Broken into 2 parts...a JML 20070416
+ // to prevent Oracle temp table data error
+ long vid = 0;
try {
- NodeProperty property = (NodeProperty)
properties.nextElement();
statement =
connection.prepareStatement(
- "insert into PROPERTIES
(VERSION_ID,PROPERTY_NAMESPACE,PROPERTY_NAME,PROPERTY_VALUE,
PROPERTY_TYPE,IS_PROTECTED) select vh.VERSION_ID, ?, ?, ?,
?, ? from VERSION_HISTORY vh, URI u where vh.URI_ID =
u.URI_ID and u.URI_STRING = ? and vh.REVISION_NO =
?");
- int protectedProperty =
property.isProtected() ? 1 : 0;
- statement.setString(1,
property.getNamespace());
- statement.setString(2,
property.getName());
- statement.setString(3,
property.getValue().toString());
- statement.setString(4,
property.getType());
- statement.setInt(5,
protectedProperty);
- statement.setString(6,
uri.toString());
- statement.setString(7,
revisionDescriptor.getRevisionNumber().toString());
+ "select vh.VERSION_ID from
VERSION_HISTORY vh, URI u where vh.URI_ID = u.URI_ID and
u.URI_STRING = ? and vh.REVISION_NO = ?");
+ statement.setString(1,
uri.toString());
+ statement.setString(2,
revisionDescriptor.getRevisionNumber().toString());
+ ResultSet res =
statement.executeQuery();
+ if (res.next()) {
+ vid = res.getLong(1);
+ } else {
+ throw new
ServiceAccessException(service, "URI and version not
found "+uri.toString()+" "+
revisionDescriptor.getRevisionNumber().toString());
+ }
+ } finally {
+ close(statement);
+ }
+ try { statement =
connection.prepareStatement("insert into PROPERTIES
VALUES (?, ?, ?, ?, ?, ?)");
+ int protectedProperty =
property.isProtected() ? 1 : 0;
statement.setLong(1, vid);
+ statement.setString(2,
property.getNamespace());
+ statement.setString(3,
property.getName());
+ statement.setString(4,
property.getValue().toString());
+ statement.setString(5,
property.getType());
+ statement.setInt(6,
protectedProperty);
statement.executeUpdate();
} finally {
close(statement);
 -671,7
+697,8 
throw createException(e, uri.toString());
}
}
-
+
+
public void removeRevisionContent(Connection
connection, Uri uri, NodeRevisionDescriptor
revisionDescriptor)
throws ServiceAccessException {
try {
79,1
Bot
------------------------------------------------------------
---------
To unsubscribe, e-mail: slide-user-unsubscribe jakarta.apache.org
For additional commands, e-mail: slide-user-help jakarta.apache.org
|
|
| Re: Oracle CLOB patch |
  Iceland |
2007-04-22 17:20:02 |
Thanks for sharing this info, we too have had that problem
for a
while now with our apps running on Oracle, we changed our
property
table to use Clob but then we got some issues and ended up
with a
corrupt Slide database. Hope we can try again on a test
server with
your patch
best regards
Eirikur, Idega Software
On Apr 20, 2007, at 7:06 AM, Justin Lipton wrote:
> Hi,
>
> We often use the Oracle as a store. Some of our
properties are
> quite long >4000 bytes so we changed the
PROPERTY_VALUE field to be
> a CLOB.
> However we were still getting errors ( ORA-01461: can
bind a LONG
> value only for insert into a LONG column).
> It turns out that the temporary table being created in
Oracle was
> causing this error - so splitting the SQL into a SELECT
than an
> INSERT provided the solution.
>
> Here's the patch we used (we're actually using the 2.1
branch but
> this patch should work against the HEAD).
>
> Regards,
> Justin.
>
> --- StandardRDBMSAdapter.java 2007-04-20
16:53:27.000000000 +1000
>
> +++ StandardRDBMSAdapter2.java 2007-04-20
16:58:15.000000000 +1000
>
>  -640,28 +640,54 
>
> }
>
> }
>
> - public void createRevisionDescriptor(Connection
connection,
> Uri uri, NodeRevisionDescriptor revisionDescriptor)
>
> + public void
createRevisionDescriptor(Connection
> connection, Uri uri, NodeRevisionDescriptor
revisionDescriptor)
>
> throws ServiceAccessException {
>
> PreparedStatement statement = null;
>
> try {
>
> assureVersionInfo(connection, uri,
revisionDescriptor);
>
> - createVersionLabels(connection, uri,
revisionDescriptor);
>
> +
>
> + for (Enumeration labels =
> revisionDescriptor.enumerateLabels();
labels.hasMoreElements();) {
>
> + long labelId =
assureLabelId(connection, (String)
> labels.nextElement());
>
> + try {
>
> + statement =
>
> + connection.prepareStatement(
>
> + "insert into
VERSION_LABELS
> (VERSION_ID, LABEL_ID) select VERSION_ID, ? from
VERSION_HISTORY
> vh, URI u where vh.URI_ID = u.URI_ID and u.URI_STRING =
? and
> vh.REVISION_NO = ?");
>
> + statement.setLong(1, labelId);
>
> + statement.setString(2,
uri.toString());
>
> + statement.setString(3,
> revisionDescriptor.getRevisionNumber().toString());
>
> + statement.executeUpdate();
>
> + } finally {
>
> + close(statement);
>
> + } }
>
> for (Enumeration properties =
> revisionDescriptor.enumerateProperties();
properties.hasMoreElements
> ();) {
>
> + NodeProperty property = (NodeProperty)
> properties.nextElement();
>
> + // Broken into 2 parts...a JML
20070416
>
> + // to prevent Oracle temp table data
error
>
> + long vid = 0;
>
> try {
>
> - NodeProperty property =
(NodeProperty)
> properties.nextElement();
>
> statement =
>
> connection.prepareStatement(
>
> - "insert into
PROPERTIES
>
(VERSION_ID,PROPERTY_NAMESPACE,PROPERTY_NAME,PROPERTY_VALUE,
PROPERTY_T
> YPE,IS_PROTECTED) select vh.VERSION_ID, ?, ?, ?, ?, ?
from
> VERSION_HISTORY vh, URI u where vh.URI_ID = u.URI_ID
and
> u.URI_STRING = ? and vh.REVISION_NO = ?");
>
> - int protectedProperty =
property.isProtected
> () ? 1 : 0;
>
> - statement.setString(1,
property.getNamespace());
>
> - statement.setString(2,
property.getName());
>
> - statement.setString(3,
property.getValue
> ().toString());
>
> - statement.setString(4,
property.getType());
>
> - statement.setInt(5,
protectedProperty);
>
> - statement.setString(6,
uri.toString());
>
> - statement.setString(7,
> revisionDescriptor.getRevisionNumber().toString());
>
> + "select vh.VERSION_ID
from
> VERSION_HISTORY vh, URI u where vh.URI_ID = u.URI_ID
and
> u.URI_STRING = ? and vh.REVISION_NO = ?");
>
> + statement.setString(1,
uri.toString());
>
> + statement.setString(2,
> revisionDescriptor.getRevisionNumber().toString());
>
> + ResultSet res =
statement.executeQuery();
>
> + if (res.next()) {
>
> + vid = res.getLong(1);
>
> + } else {
>
> + throw new
ServiceAccessException(service,
> "URI and version not found
"+uri.toString()+" "+
> revisionDescriptor.getRevisionNumber().toString());
>
> + }
>
> + } finally {
>
> + close(statement);
>
> + }
>
> + try { statement =
> connection.prepareStatement("insert into
PROPERTIES VALUES
> (?, ?, ?, ?, ?, ?)");
>
> + int protectedProperty =
property.isProtected
> () ? 1 : 0; statement.setLong(1,
vid);
>
> + statement.setString(2,
property.getNamespace());
>
> + statement.setString(3,
property.getName());
>
> + statement.setString(4,
property.getValue
> ().toString());
>
> + statement.setString(5,
property.getType());
>
> + statement.setInt(6,
protectedProperty);
>
> statement.executeUpdate();
>
> } finally {
>
> close(statement);
>
>  -671,7 +697,8 
>
> throw createException(e, uri.toString());
>
> }
>
> }
>
> -
>
> +
>
> +
>
> public void removeRevisionContent(Connection
connection, Uri
> uri, NodeRevisionDescriptor revisionDescriptor)
>
> throws ServiceAccessException {
>
> try {
>
>
> 79,1
Bot
>
>
>
>
------------------------------------------------------------
---------
> To unsubscribe, e-mail: slide-user-unsubscribe jakarta.apache.org
> For additional commands, e-mail: slide-user-help jakarta.apache.org
>
------------------------------------------------------------
---------
To unsubscribe, e-mail: slide-user-unsubscribe jakarta.apache.org
For additional commands, e-mail: slide-user-help jakarta.apache.org
|
|
[1-8]
|
|