You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-user@jakarta.apache.org by Mirko Froehlich <mf...@digitalchocolate.com> on 2004/11/20 00:59:22 UTC

major deadlock issues (JDBC store with MySQL)

I did some basic JMeter concurrency testing to validate if Slide meets
our concurrency requirements. Unfortunately, the results were not very
promising.

As I mentioned, we are planning on using Slide as a repository for
application data. We expect to have a few hundred concurrent users of
our application who would be reading from as well as (although less
frequently) writing to the repository. In case it matters, most of the
read and write access would be to a dedicated folder per user, rather
than a shared folder. I realize that this use case is probably very
different from the way most people use Slide, which I assume is mostly
for web publishing.

My test mainly consists of a JSP page that uses the WebDAV client
library to access a folder, iterate over the 10 contained documents and
retrieve their contents (about 2k each), and create a new document,
retrieve it, and then delete it. I have 100 different folders, all
populated with the same 10 documents. My JMeter test consists of 5
concurrent threads that each access a different one of the 100 folders,
with 800ms between requests. After only a few seconds, Slide completely
deadlocks with various exceptions to that effect in the Tomcat logs.

I have tried increasing my JDBC store's MySQL connection pool from 10 to
30, without any improvements. It seems like creating documents is
responsible for the deadlocks, as the test behaved fine when it was
limited to read-only access.

Can anyone think of a way for me to tune the system in order to prevent
the deadlocks from occurring?

-Mirko

Re: table prefix

Posted by Richard Emberson <re...@edgedynamics.com>.
If I said suffix its not what I meant .... yes, prefix is much better.

Richard


kranga wrote:
> I would strongly recommend a table prefix as opposed to a suffix as you
> mention at the end of the first paragraph. That was when you list the
> tables, all tables for a given app/module are listed together, yet in
> alphabetic order. With a suffix, the table names will get dispersed among
> the table names from other applications.
> 
> my inflation adjusted 17 cents :)
> 
> ----- Original Message ----- 
> From: "Richard Emberson" <re...@edgedynamics.com>
> To: "Slide Users Mailing List" <sl...@jakarta.apache.org>
> Sent: Tuesday, November 23, 2004 10:20 AM
> Subject: Re: table prefix
> 
> 
> 
>>Our application has both tables that we have created and tables from
>>more than one external application, such a Slide. So how to keep table
>>names from colliding? One way of course is to create a different
>>database per section of one's application. Another is for each
>>creator of tables to assume that they will exist in a federated
>>system and thus they should take the effort as a good citizen of that
>>federation to make sure their table names are unique - one way to
>>do this is with a "namespace" suffix.
>>
>>Some in our group believed that they were the center of the universe
>>a could pick whatever table names they wished. Those with more
>>experience with integrating multiple separate software parts into
>>a whole knew that such belief were folly and lead to madness.
>>
>>Richard
>>
>>James Mason wrote:
>>
>>>Not that I know of. That particular issue was resolved by creating the
>>>tables with a non-system user. In Oracle, that puts the tables in the
>>>default schema of the user (versus the System schema).
>>>
>>>Is this a feature that you need?
>>>
>>>-James
>>>
>>>On Mon, 2004-11-22 at 13:30 -0800, Richard Emberson wrote:
>>>
>>>
>>>>A little while ago someone was suggesting that they were working on
>>>>adding a feature that would allow one to specify a database table
>>>>prefix (to be used by all Slide tables) which would be used both by the
>>>>initialization sql and the java code.
>>>>
>>>>Is that work happening?
>>>>
>>>>Thanks.
>>>>
>>>>Richard
>>>>
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
>>>For additional commands, e-mail: slide-user-help@jakarta.apache.org
>>>
>>
>>
>>-- 
>>This email message is for the sole use of the intended recipient(s) and
>>may contain confidential information.  Any unauthorized review, use,
>>disclosure or distribution is prohibited.  If you are not the intended
>>recipient, please contact the sender by reply email and destroy all
>>copies of the original message.
>>
>>---------------------------------------------------------------------
>>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
> 


-- 
This email message is for the sole use of the intended recipient(s) and
may contain confidential information.  Any unauthorized review, use,
disclosure or distribution is prohibited.  If you are not the intended
recipient, please contact the sender by reply email and destroy all
copies of the original message.

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: table prefix

Posted by kranga <kr...@k2d2.org>.
I would strongly recommend a table prefix as opposed to a suffix as you
mention at the end of the first paragraph. That was when you list the
tables, all tables for a given app/module are listed together, yet in
alphabetic order. With a suffix, the table names will get dispersed among
the table names from other applications.

my inflation adjusted 17 cents :)

----- Original Message ----- 
From: "Richard Emberson" <re...@edgedynamics.com>
To: "Slide Users Mailing List" <sl...@jakarta.apache.org>
Sent: Tuesday, November 23, 2004 10:20 AM
Subject: Re: table prefix


> Our application has both tables that we have created and tables from
> more than one external application, such a Slide. So how to keep table
> names from colliding? One way of course is to create a different
> database per section of one's application. Another is for each
> creator of tables to assume that they will exist in a federated
> system and thus they should take the effort as a good citizen of that
> federation to make sure their table names are unique - one way to
> do this is with a "namespace" suffix.
>
> Some in our group believed that they were the center of the universe
> a could pick whatever table names they wished. Those with more
> experience with integrating multiple separate software parts into
> a whole knew that such belief were folly and lead to madness.
>
> Richard
>
> James Mason wrote:
> > Not that I know of. That particular issue was resolved by creating the
> > tables with a non-system user. In Oracle, that puts the tables in the
> > default schema of the user (versus the System schema).
> >
> > Is this a feature that you need?
> >
> > -James
> >
> > On Mon, 2004-11-22 at 13:30 -0800, Richard Emberson wrote:
> >
> >>A little while ago someone was suggesting that they were working on
> >>adding a feature that would allow one to specify a database table
> >>prefix (to be used by all Slide tables) which would be used both by the
> >>initialization sql and the java code.
> >>
> >>Is that work happening?
> >>
> >>Thanks.
> >>
> >>Richard
> >>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: slide-user-help@jakarta.apache.org
> >
>
>
> -- 
> This email message is for the sole use of the intended recipient(s) and
> may contain confidential information.  Any unauthorized review, use,
> disclosure or distribution is prohibited.  If you are not the intended
> recipient, please contact the sender by reply email and destroy all
> copies of the original message.
>
> ---------------------------------------------------------------------
> 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


Re: table prefix

Posted by James Mason <ma...@apache.org>.
Most of the applications I deal with run with a dedicated database. This
makes management and configuration easier, and allows for finer-grained
performance tuning.

Adding a prefix to the table names shouldn't be too hard, though, and
from the other thread it sounds like almost everything has been done.
Anyone volunteer to finish things up?

-James

On Tue, 2004-11-23 at 07:20 -0800, Richard Emberson wrote:
> Our application has both tables that we have created and tables from
> more than one external application, such a Slide. So how to keep table
> names from colliding? One way of course is to create a different
> database per section of one's application. Another is for each
> creator of tables to assume that they will exist in a federated
> system and thus they should take the effort as a good citizen of that
> federation to make sure their table names are unique - one way to
> do this is with a "namespace" suffix.
> 
> Some in our group believed that they were the center of the universe
> a could pick whatever table names they wished. Those with more
> experience with integrating multiple separate software parts into
> a whole knew that such belief were folly and lead to madness.
> 
> Richard
> 
> James Mason wrote:
> > Not that I know of. That particular issue was resolved by creating the
> > tables with a non-system user. In Oracle, that puts the tables in the
> > default schema of the user (versus the System schema).
> > 
> > Is this a feature that you need?
> > 
> > -James
> > 
> > On Mon, 2004-11-22 at 13:30 -0800, Richard Emberson wrote:
> > 
> >>A little while ago someone was suggesting that they were working on
> >>adding a feature that would allow one to specify a database table
> >>prefix (to be used by all Slide tables) which would be used both by the
> >>initialization sql and the java code.
> >>
> >>Is that work happening?
> >>
> >>Thanks.
> >>
> >>Richard
> >>
> > 
> > 
> > 
> > ---------------------------------------------------------------------
> > 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


Re: table prefix

Posted by Richard Emberson <re...@edgedynamics.com>.
Our application has both tables that we have created and tables from
more than one external application, such a Slide. So how to keep table
names from colliding? One way of course is to create a different
database per section of one's application. Another is for each
creator of tables to assume that they will exist in a federated
system and thus they should take the effort as a good citizen of that
federation to make sure their table names are unique - one way to
do this is with a "namespace" suffix.

Some in our group believed that they were the center of the universe
a could pick whatever table names they wished. Those with more
experience with integrating multiple separate software parts into
a whole knew that such belief were folly and lead to madness.

Richard

James Mason wrote:
> Not that I know of. That particular issue was resolved by creating the
> tables with a non-system user. In Oracle, that puts the tables in the
> default schema of the user (versus the System schema).
> 
> Is this a feature that you need?
> 
> -James
> 
> On Mon, 2004-11-22 at 13:30 -0800, Richard Emberson wrote:
> 
>>A little while ago someone was suggesting that they were working on
>>adding a feature that would allow one to specify a database table
>>prefix (to be used by all Slide tables) which would be used both by the
>>initialization sql and the java code.
>>
>>Is that work happening?
>>
>>Thanks.
>>
>>Richard
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-user-help@jakarta.apache.org
> 


-- 
This email message is for the sole use of the intended recipient(s) and
may contain confidential information.  Any unauthorized review, use,
disclosure or distribution is prohibited.  If you are not the intended
recipient, please contact the sender by reply email and destroy all
copies of the original message.

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: table prefix

Posted by James Mason <ma...@apache.org>.
Not that I know of. That particular issue was resolved by creating the
tables with a non-system user. In Oracle, that puts the tables in the
default schema of the user (versus the System schema).

Is this a feature that you need?

-James

On Mon, 2004-11-22 at 13:30 -0800, Richard Emberson wrote:
> A little while ago someone was suggesting that they were working on
> adding a feature that would allow one to specify a database table
> prefix (to be used by all Slide tables) which would be used both by the
> initialization sql and the java code.
> 
> Is that work happening?
> 
> Thanks.
> 
> Richard
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: table prefix

Posted by Richard Emberson <re...@edgedynamics.com>.
Var George,

Yes, thats the thread.

Thanks, hope someone in the Slide project will help.

Richard


Var George wrote:
> Richard
> 
>  
> 
> Are you talking about the following thread?
> 
>  
> 
>   http://www.mail-archive.com/slide-user@jakarta.apache.org/msg08307.html
> 
>  
> 
> 
> I did all the changes  (mostly per Oliver's suggestions – thanks Oliver!) and it is working well for me. I wanted to submit these changes so that slide dev team may add it as a standard feature in slide but I am still waiting to hear from slide team on what is the acceptable solution for fixing RDBMSComparableResourcesPool.java. This is the only file that has SQL outside Adapter classes so I am not really sure how this class is used or if its required. The above link was my last email on it but I haven't heard from Unico or anyone . If someone in slide team can point me to an acceptable solution then I will be glad to make/test those changes and send the updated source
> 
>  
> 
> regards
> 
> Varughese George
> 
> 
> Richard Emberson <re...@edgedynamics.com> wrote:
> 
> A little while ago someone was suggesting that they were working on
> adding a feature that would allow one to specify a database table
> prefix (to be used by all Slide tables) which would be used both by the
> initialization sql and the java code.
> 
> Is that work happening?
> 
> Thanks.
> 
> Richard
> 


-- 
This email message is for the sole use of the intended recipient(s) and
may contain confidential information.  Any unauthorized review, use,
disclosure or distribution is prohibited.  If you are not the intended
recipient, please contact the sender by reply email and destroy all
copies of the original message.

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: table prefix

Posted by Richard Emberson <re...@edgedynamics.com>.
Var George,

RDBMSComparableResourcesPool is used in
org.apache.slide.store.impl.rdbms.expression.RDBMSExpressionFactory

which has the following javadoc:

DASL Basic search expression factory that compiles query expressions
to native SQL queries

While we do not plan to use DASL, for completeness one would like
(and I assume the Slide folks would require) this to work with
table prefixes.

How did you implement adding the prefix to the table names in the
java code and in the sql scripts.

Did you use Ants ability to filter files and copy all of the sources
to a generated-source directory having Ant replace a table prefix
like @TABLE_PREFIX@ with either the empty string "" or with a
supplied prefix string (like "SLIDE_")?

Richard

Var George wrote:
> Richard
> 
>  
> 
> Are you talking about the following thread?
> 
>  
> 
>   http://www.mail-archive.com/slide-user@jakarta.apache.org/msg08307.html
> 
>  
> 
> 
> I did all the changes  (mostly per Oliver's suggestions – thanks Oliver!) and it is working well for me. I wanted to submit these changes so that slide dev team may add it as a standard feature in slide but I am still waiting to hear from slide team on what is the acceptable solution for fixing RDBMSComparableResourcesPool.java. This is the only file that has SQL outside Adapter classes so I am not really sure how this class is used or if its required. The above link was my last email on it but I haven't heard from Unico or anyone . If someone in slide team can point me to an acceptable solution then I will be glad to make/test those changes and send the updated source
> 
>  
> 
> regards
> 
> Varughese George
> 
> 
> Richard Emberson <re...@edgedynamics.com> wrote:
> 
> A little while ago someone was suggesting that they were working on
> adding a feature that would allow one to specify a database table
> prefix (to be used by all Slide tables) which would be used both by the
> initialization sql and the java code.
> 
> Is that work happening?
> 
> Thanks.
> 
> Richard
> 


-- 
This email message is for the sole use of the intended recipient(s) and
may contain confidential information.  Any unauthorized review, use,
disclosure or distribution is prohibited.  If you are not the intended
recipient, please contact the sender by reply email and destroy all
copies of the original message.

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: table prefix

Posted by Var George <va...@yahoo.com>.
Richard

 

Are you talking about the following thread?

 

  http://www.mail-archive.com/slide-user@jakarta.apache.org/msg08307.html

 


I did all the changes  (mostly per Oliver's suggestions � thanks Oliver!) and it is working well for me. I wanted to submit these changes so that slide dev team may add it as a standard feature in slide but I am still waiting to hear from slide team on what is the acceptable solution for fixing RDBMSComparableResourcesPool.java. This is the only file that has SQL outside Adapter classes so I am not really sure how this class is used or if its required. The above link was my last email on it but I haven't heard from Unico or anyone . If someone in slide team can point me to an acceptable solution then I will be glad to make/test those changes and send the updated source

 

regards

Varughese George


Richard Emberson <re...@edgedynamics.com> wrote:

A little while ago someone was suggesting that they were working on
adding a feature that would allow one to specify a database table
prefix (to be used by all Slide tables) which would be used both by the
initialization sql and the java code.

Is that work happening?

Thanks.

Richard

-- 
This email message is for the sole use of the intended recipient(s) and
may contain confidential information. Any unauthorized review, use,
disclosure or distribution is prohibited. If you are not the intended
recipient, please contact the sender by reply email and destroy all
copies of the original message.

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


			
---------------------------------
Do you Yahoo!?
 The all-new My Yahoo! � Get yours free!    

table prefix

Posted by Richard Emberson <re...@edgedynamics.com>.
A little while ago someone was suggesting that they were working on
adding a feature that would allow one to specify a database table
prefix (to be used by all Slide tables) which would be used both by the
initialization sql and the java code.

Is that work happening?

Thanks.

Richard

-- 
This email message is for the sole use of the intended recipient(s) and
may contain confidential information.  Any unauthorized review, use,
disclosure or distribution is prohibited.  If you are not the intended
recipient, please contact the sender by reply email and destroy all
copies of the original message.

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Mirko Froehlich <mf...@digitalchocolate.com>.
I just tried it again with compression turned on, and the result was
only marginally better. This time, the system didn't deadlock completely
until after 63 iterations, whereas before it was closer to 10...

The exceptions seem to look slightly different, too (I don't think I
noticed a HeuristicMixedException before). They still lead to the same
deadlock exception, though. See below.

I have tried to attach my JMeter test case, but haven't been lucky
getting the attachments getting accepted by the mailing list server so
far. I'll follow up in a separate email.

Unfortunately I didn't have much time yesterday to look into this issue.
Today, I am hoping to try the patch that Warwick mentioned, as well as
run the test against the file store. I will also try your JUnit test.

Thanks again for your help.

-Mirko


Exceptions:
=========

22 Nov 2004 17:26:31 - org.apache.slide.transaction.SlideTransaction -
WARNING - Enlist failure: Resource manager
org.apache.slide.store.impl.rdbms.JDBCStore@1d27069 Error code XAER_NOTA
in Transaction 1272 xid http-8080-Processor16-1101173191802-1272- in
thread http-8080-Processor16
http-8080-Processor9, 22-Nov-2004 17:26:31, unauthenticated, GET, 200
"OK", 225 ms, /db/load_test/user_6/dummy_1101173191200
http-8080-Processor15, 22-Nov-2004 17:26:31, unauthenticated, GET, 200
"OK", 61 ms, /db/load_test/user_8/foobar_3.txt
http-8080-Processor15, 22-Nov-2004 17:26:31, unauthenticated, GET, 200
"OK", 42 ms, /db/load_test/user_8/foobar_2.txt
http-8080-Processor15, 22-Nov-2004 17:26:31, unauthenticated, GET, 200
"OK", 42 ms, /db/load_test/user_8/foobar_1.txt
22 Nov 2004 17:26:32 - org.apache.slide.transaction.SlideTransaction -
WARNING - Commit failure: Resource manager
org.apache.slide.store.impl.rdbms.JDBCStore@1d27069 Error code XAER_NOTA
in Transaction 1272 xid http-8080-Processor16-1101173191802-1272- in
thread http-8080-Processor16
javax.transaction.xa.XAException
        at
org.apache.commons.transaction.util.xa.AbstractXAResource.commit(AbstractXAResource.java:69)
        at
org.apache.slide.transaction.SlideTransaction.commit(SlideTransaction.java:300)
        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:388)
        at
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)
22 Nov 2004 17:26:32 -
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:388)
        at
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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:388)
        at
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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:409)
        at
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)
22 Nov 2004 17:26:32 - 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:404)
        at
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)


Followed shortly afterwards by the deadlock exception:


22 Nov 2004 17:30:48 -
org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter - ERROR - SQL error
1205 on /db/load_test/user_57/dummy_1101173395321: Deadlock found when
trying to get lock; Try restarting transaction,  message from server:
"Lock wait timeout exceeded; Try restarting transaction"
java.sql.SQLException: Deadlock found when trying to get lock; Try
restarting transaction,  message from server: "Lock wait timeout
exceeded; Try restarting transaction"
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
        at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
        at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.removeRevisionDescriptor(StandardRDBMSAdapter.java:693)
        at
org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.removeRevisionDescriptor(AbstractRDBMSStore.java:773)
        at
org.apache.slide.store.AbstractStore.removeRevisionDescriptor(AbstractStore.java:1259)
        at
org.apache.slide.store.ExtendedStore.removeRevisionDescriptor(ExtendedStore.java:925)
        at
org.apache.slide.content.ContentImpl.remove(ContentImpl.java:1146)
        at
org.apache.slide.macro.MacroImpl.deleteObject(MacroImpl.java:824)
        at org.apache.slide.macro.MacroImpl.delete(MacroImpl.java:523)
        at org.apache.slide.macro.MacroImpl.delete(MacroImpl.java:481)
        at
org.apache.slide.webdav.method.DeleteMethod.executeRequest(DeleteMethod.java:156)
        at
org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
        at
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)



On Sat, 2004-11-20 at 12:35, Oliver Zeigermann wrote:
> This should not be caused by using MySQL 4 as the Slide code for both
> is identical when it comes to inserting content. Additionally,
> serilzability of requests is handled in the WebDAV layer, so there
> really should be no deadlocks in the store except there are
> programming errors (in the store implementation).
> 
> You do not use externally controlled transactions, do you? Also make
> sure that there are not open connections with pending transactions
> from other tools like e.g. an SQL command line tool or a visualizer or
> anything.
> 
> Anyway, looking forward to your test case :)
> 
> Oliver



---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Mirko Froehlich <mf...@digitalchocolate.com>.
I'll take a look at your test suite and see if I can adapt it.

My test requires JMeter. In case you want to try to run it, you should
be able to load the test case as it is. It hits
"http://localhost:8080/jmeter_slide/slide.jsp", which is where my
slide.jsp is deployed (this URL can be changed in the test case's HTTP
Request node). This web app has to have all the webdavclient JAR files.
I would post the WAR file, but it's too large for the mailing list.

But I'll check out your test suite as well.

-Mirko


On Tue, 2004-11-23 at 09:59, Oliver Zeigermann wrote:

> Attachments made it to the list. Would be great if you could provide a
> test case for our test suite as I have no idea how to let your test
> run. Anyone else?
> 
> Oliver
> 
> 
> On Tue, 23 Nov 2004 09:21:06 -0800, Mirko Froehlich
> <mf...@digitalchocolate.com> wrote:
> >  I have attached my JMeter test case, as well as my test JSPs.
> > "populate.jsp" is used to populate the repository before running the test.
> > It assumes that the "/slide/db/load_test/" folder exists and creates 100
> > subfolders called "user_[i]" with 10 documents each. "slide.jsp" is the page
> > that my JMeter test case is hitting. JMeter passes the folder name as a
> > parameter, and the test then iterates over the documents in the folder,
> > retrieves their content, creates a new document, retrieves its content, and
> > deletes it. The test case uses 5 concurrent threads, and each thread pauses
> > for 800ms between requests.
> >  
> >  Hope the attachments make it through... :)
> >  
> >  -Mirko
> > 
> > 
> >  
> >  
> >  On Sat, 2004-11-20 at 12:35, Oliver Zeigermann wrote: 
> >  This should not be caused by using MySQL 4 as the Slide code for both is
> > identical when it comes to inserting content. Additionally, serilzability of
> > requests is handled in the WebDAV layer, so there really should be no
> > deadlocks in the store except there are programming errors (in the store
> > implementation). You do not use externally controlled transactions, do you?
> > Also make sure that there are not open connections with pending transactions
> > from other tools like e.g. an SQL command line tool or a visualizer or
> > anything. Anyway, looking forward to your test case :) Oliver 
> >  
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-user-help@jakarta.apache.org
> 

Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
Attachments made it to the list. Would be great if you could provide a
test case for our test suite as I have no idea how to let your test
run. Anyone else?

Oliver


On Tue, 23 Nov 2004 09:21:06 -0800, Mirko Froehlich
<mf...@digitalchocolate.com> wrote:
>  I have attached my JMeter test case, as well as my test JSPs.
> "populate.jsp" is used to populate the repository before running the test.
> It assumes that the "/slide/db/load_test/" folder exists and creates 100
> subfolders called "user_[i]" with 10 documents each. "slide.jsp" is the page
> that my JMeter test case is hitting. JMeter passes the folder name as a
> parameter, and the test then iterates over the documents in the folder,
> retrieves their content, creates a new document, retrieves its content, and
> deletes it. The test case uses 5 concurrent threads, and each thread pauses
> for 800ms between requests.
>  
>  Hope the attachments make it through... :)
>  
>  -Mirko
> 
> 
>  
>  
>  On Sat, 2004-11-20 at 12:35, Oliver Zeigermann wrote: 
>  This should not be caused by using MySQL 4 as the Slide code for both is
> identical when it comes to inserting content. Additionally, serilzability of
> requests is handled in the WebDAV layer, so there really should be no
> deadlocks in the store except there are programming errors (in the store
> implementation). You do not use externally controlled transactions, do you?
> Also make sure that there are not open connections with pending transactions
> from other tools like e.g. an SQL command line tool or a visualizer or
> anything. Anyway, looking forward to your test case :) Oliver 
>  
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Mirko Froehlich <mf...@digitalchocolate.com>.
I have attached my JMeter test case, as well as my test JSPs.
"populate.jsp" is used to populate the repository before running the
test. It assumes that the "/slide/db/load_test/" folder exists and
creates 100 subfolders called "user_[i]" with 10 documents each.
"slide.jsp" is the page that my JMeter test case is hitting. JMeter
passes the folder name as a parameter, and the test then iterates over
the documents in the folder, retrieves their content, creates a new
document, retrieves its content, and deletes it. The test case uses 5
concurrent threads, and each thread pauses for 800ms between requests.

Hope the attachments make it through... :)

-Mirko


On Sat, 2004-11-20 at 12:35, Oliver Zeigermann wrote:

> This should not be caused by using MySQL 4 as the Slide code for both
> is identical when it comes to inserting content. Additionally,
> serilzability of requests is handled in the WebDAV layer, so there
> really should be no deadlocks in the store except there are
> programming errors (in the store implementation).
> 
> You do not use externally controlled transactions, do you? Also make
> sure that there are not open connections with pending transactions
> from other tools like e.g. an SQL command line tool or a visualizer or
> anything.
> 
> Anyway, looking forward to your test case :)
> 
> Oliver



Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
This should not be caused by using MySQL 4 as the Slide code for both
is identical when it comes to inserting content. Additionally,
serilzability of requests is handled in the WebDAV layer, so there
really should be no deadlocks in the store except there are
programming errors (in the store implementation).

You do not use externally controlled transactions, do you? Also make
sure that there are not open connections with pending transactions
from other tools like e.g. an SQL command line tool or a visualizer or
anything.

Anyway, looking forward to your test case :)

Oliver


On Sat, 20 Nov 2004 09:26:10 -0800 (PST),
mfroehlich@digitalchocolate.com <mf...@digitalchocolate.com>
wrote:
> Thanks a lot for the many updates... I actually don't have access to most
> of my test data right now, as it is at work. I'll try my JMeter test again
> on Monday with compression enabled, and I'll also take a look at your
> Junit test case.
> 
> The Domain.xml I sent you was indeed the one that was failing. I am using
> MySQL 4.0.18. We have talked about potentially moving to 4.1 at some
> point, but for now our production environment depends on 4.0.18. Are there
> any database settings that I should tweak (e.g. regarding locking?).
> 
> -Mirko
> 
> 
> 
> 
> > Created a testcase where many threads effectively at random do
> > get,put,delete on the *same* file. I guess this is the hardest
> > concurrency test, the prorgrammer's night mare, right?
> >
> > And it worked with both the 2.1 locking and the new one in 2.2. Only
> > thing I did was to reduce the number of connections to 10 as I do not
> > know how many internal conncections MySQL has by default and how it
> > reacts when it runs out of connections. Some dbs throw errors instead
> > of waiting then...
> >
> > Anyway, the test is at
> >
> > testsuite\testsuite\junit\xmltestcases\functional\extra\multi-user\getPut\getPutSame.xml
> >
> > in cvs head. Maybe you can tune it to reveal the deadlocks. I will
> > have an additional look at it then.
> >
> > Oliver
> >
> > On Sat, 20 Nov 2004 14:42:44 +0100, Oliver Zeigermann
> > <ol...@gmail.com> wrote:
> >> ... and if you provided a test case that revealed any more deadlock I
> >> promise that I will try to help you further.
> >>
> >> Oliver
> >>
> >> On Sat, 20 Nov 2004 14:40:47 +0100, Oliver Zeigermann
> >>
> >>
> >> <ol...@gmail.com> wrote:
> >> > And finally took the time to check it with MySQL 4.1 with the attached
> >> > Domain.xml which differs from yours in details only and:
> >> >
> >> > no deadlocks, no conflicts, no problems.
> >> >
> >> > Could you describe how your test scenario looks like? Is your attached
> >> > Domain.xml really the one you used for testing?
> >> >
> >> > Oliver
> >> >
> >> > On Sat, 20 Nov 2004 13:27:36 +0100, Oliver Zeigermann
> >> >
> >> >
> >> > <ol...@gmail.com> wrote:
> >> > > I just tried this
> >> > >
> >> > > TProcessor.CMD -pattern *cases\\functional\\extra\\multi-user*
> >> -users
> >> > > 20 -iterations 10
> >> > >
> >> > > which is 20 threads repeating uploads, deletes for 10 times and
> >> > > meanwhile browsed Slide with the Windows explorer and it worked
> >> > > without deadlocks.
> >> > >
> >> > > Caching was turned off as well.
> >> > >
> >> > > However, my store is the tx file one and I can not exclude there are
> >> > > still programming errors in the MySQL store as I have never used it.
> >> > > Lately problems were reported with other db stores when not using
> >> > > compression mode. Could you try it again with compression turned on
> >> > > and see if this changes anything.
> >> > >
> >> > > Oliver
> >> > >
> >> > > On Sat, 20 Nov 2004 09:31:17 +0100, Oliver Zeigermann
> >> > >
> >> > >
> >> > > <ol...@gmail.com> wrote:
> >> > > > OK, thanks for providing that info. I will have a look at it ASAP.
> >> > > > Which MySQL version are you using?
> >> > > >
> >> > > > Oliver
> >> > > >
> >> > > >
> >> > > > On Fri, 19 Nov 2004 17:44:11 -0800, Mirko Froehlich
> >> > > >
> >> > > >
> >> > > > <mf...@digitalchocolate.com> wrote:
> >> > > > >  Yes, I'm using 2.1b2. I have copied my domain.xml below. It
> >> does have the
> >> > > > > two parameters you mentioned. One thing I should mention is that
> >> I disabled
> >> > > > > caching, because I really wanted to simulate the effect of
> >> iterating over
> >> > > > > new content without the effects of caching. My domain.xml
> >> defines both a
> >> > > > > text and a JDBC store, but the JDBC store is the one I'm using
> >> for this
> >> > > > > test. I have also included one of the stack traces below.
> >> > > > >
> >> > > > >
> >> > > > >  Domain.xml:
> >> > > > >  =========
> >> > > > >
> >> > > > >  <?xml version="1.0"?>
> >> > > > >  <slide>
> >> > > > >  <namespace name="slide">
> >> > > > >  <definition>
> >> > > > >  <store name="tx">
> >> > > > >  <!-- cache settings (added by mirko) -->
> >> > > > >  <parameter name="cache-mode">off</parameter>
> >> > > > >  <parameter name="enable-content-caching">false</parameter>
> >> > > > >  <parameter name="content-cache-size">1000</parameter>
> >> > > > >  <parameter name="object-cache-size">1000</parameter>
> >> > > > >
> >> > > > >  <parameter name="tlock-timeout">120</parameter>
> >> > > > >  <nodestore
> >> > > > > classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
> >> > > > >  <parameter
> >> > > > > name="rootpath">/usr/local/jakarta-slide/repository/store/metadata</parameter>
> >> > > > >  <parameter
> >> > > > > name="workpath">/usr/local/jakarta-slide/repository/work/metadata</parameter>
> >> > > > >  <parameter name="defer-saving">true</parameter>
> >> > > > >  <parameter name="timeout">120</parameter>
> >> > > > >  </nodestore>
> >> > > > >  <sequencestore
> >> classname="org.apache.slide.store.txfile.FileSequenceStore">
> >> > > > >  <parameter
> >> > > > > name="rootpath">/usr/local/jakarta-slide/repository/store/sequence</parameter>
> >> > > > >  </sequencestore>
> >> > > > >  <securitystore>
> >> > > > >  <reference store="nodestore"/>
> >> > > > >  </securitystore>
> >> > > > >  <lockstore>
> >> > > > >  <reference store="nodestore"/>
> >> > > > >  </lockstore>
> >> > > > >  <revisiondescriptorsstore>
> >> > > > >  <reference store="nodestore"/>
> >> > > > >  </revisiondescriptorsstore>
> >> > > > >  <revisiondescriptorstore>
> >> > > > >  <reference store="nodestore"/>
> >> > > > >  </revisiondescriptorstore>
> >> > > > >  <contentstore
> >> classname="org.apache.slide.store.txfile.TxFileContentStore">
> >> > > > >  <parameter
> >> > > > > name="rootpath">/usr/local/jakarta-slide/repository/store/content</parameter>
> >> > > > >  <parameter
> >> > > > > name="workpath">/usr/local/jakarta-slide/repository/work/content</parameter>
> >> > > > >  <parameter name="defer-saving">true</parameter>
> >> > > > >  <parameter name="timeout">120</parameter>
> >> > > > >  </contentstore>
> >> > > > >                  <!-- uncomment if you want to use the sample
> >> Indexer -->
> >> > > > >                  <!-- be sure to have Lucene in your classpath
> >> > > > > -->
> >> > > > >                  <!--
> >> > > > >                  <contentindexer
> >> > > > > classname="org.apache.slide.index.SampleTxtContainsIndexer">
> >> > > > >                  <parameter name="indexpath">./index</parameter>
> >> > > > >                  </contentindexer>
> >> > > > >          -->
> >> > > > >  </store>
> >> > > > >  <store name="db">
> >> > > > >  <!-- cache settings (added by mirko) -->
> >> > > > >  <parameter name="cache-mode">off</parameter>
> >> > > > >  <parameter name="enable-content-caching">false</parameter>
> >> > > > >  <parameter name="content-cache-size">1000</parameter>
> >> > > > >  <parameter name="object-cache-size">1000</parameter>
> >> > > > >
> >> > > > >  <nodestore
> >> classname="org.apache.slide.store.impl.rdbms.JDBCStore">
> >> > > > >  <parameter
> >> > > > > name="adapter">org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter</parameter>
> >> > > > >  <parameter name="driver">com.mysql.jdbc.Driver</parameter>
> >> > > > >  <parameter name="url">jdbc:mysql://localhost/slide</parameter>
> >> > > > >  <parameter name="user">slide</parameter>
> >> > > > >  <parameter name="password">slide</parameter>
> >> > > > >  <parameter name="dbcpPooling">true</parameter>
> >> > > > >  <parameter name="maxPooledConnections">30</parameter>
> >> > > > >  <parameter name="isolation">SERIALIZABLE</parameter>
> >> > > > >  <parameter name="compress">false</parameter>
> >> > > > >  </nodestore>
> >> > > > >  <contentstore>
> >> > > > >  <reference store="nodestore" />
> >> > > > >  </contentstore>
> >> > > > >  <securitystore>
> >> > > > >  <reference store="nodestore" />
> >> > > > >  </securitystore>
> >> > > > >  <lockstore>
> >> > > > >  <reference store="nodestore" />
> >> > > > >  </lockstore>
> >> > > > >  <revisiondescriptorsstore>
> >> > > > >  <reference store="nodestore" />
> >> > > > >  </revisiondescriptorsstore>
> >> > > > >  <revisiondescriptorstore>
> >> > > > >  <reference store="nodestore" />
> >> > > > >  </revisiondescriptorstore>
> >> > > > >  </store>
> >> > > > >  <scope match="/" store="tx"/>
> >> > > > >  <scope match="/db" store="db"/>
> >> > > > >  </definition>
> >> > > > >  <configuration>
> >> > > > >              <!-- Actions mapping -->
> >> > > > >  <read-object>/actions/read</read-object>
> >> > > > >  <create-object>/actions/write</create-object>
> >> > > > >  <remove-object>/actions/write</remove-object>
> >> > > > >  <grant-permission>/actions/write-acl</grant-permission>
> >> > > > >  <revoke-permission>/actions/write-acl</revoke-permission>
> >> > > > >  <read-permissions>/actions/read-acl</read-permissions>
> >> > > > > <read-own-permissions>/actions/read-current-user-privilege-set</read-own-permissions>
> >> > > > >  <lock-object>/actions/write</lock-object>
> >> > > > >  <kill-lock>/actions/unlock</kill-lock>
> >> > > > >  <read-locks>/actions/read</read-locks>
> >> > > > >  <read-revision-metadata>/actions/read</read-revision-metadata>
> >> > > > > <create-revision-metadata>/actions/write-properties</create-revision-metadata>
> >> > > > > <modify-revision-metadata>/actions/write-properties</modify-revision-metadata>
> >> > > > > <remove-revision-metadata>/actions/write-properties</remove-revision-metadata>
> >> > > > >  <read-revision-content>/actions/read</read-revision-content>
> >> > > > >  <create-revision-content>/actions/write-content</create-revision-content>
> >> > > > >  <modify-revision-content>/actions/write-content</modify-revision-content>
> >> > > > >  <remove-revision-content>/actions/write-content</remove-revision-content>
> >> > > > >  <bind-member>/actions/bind</bind-member>
> >> > > > >  <unbind-member>/actions/unbind</unbind-member>
> >> > > > >              <!-- Paths configuration -->
> >> > > > >  <userspath>/users</userspath>
> >> > > > >  <rolespath>/roles</rolespath>
> >> > > > >  <actionspath>/actions</actionspath>
> >> > > > >  <filespath>/files</filespath>
> >> > > > >  <parameter name="dav">true</parameter>
> >> > > > >  <parameter name="standalone">true</parameter>
> >> > > > >  <parameter name="acl_inheritance_type">path</parameter>
> >> > > > >              <!-- Nested roles:  means no nesting (default), 1
> 
> 
> >> means one
> >> > > > > sublevel, etc. -->
> >> > > > >  <parameter name="nested_roles_maxdepth">0</parameter>
> >> > > > >              <!-- Can be "off", "write" and "full" -->
> >> > > > >  <parameter name="sequential-mode">full</parameter>
> >> > > > >              <!-- "false" lets all read-only methods be executed
> >> outside of
> >> > > > > transactions -->
> >> > > > >  <parameter name="all-methods-in-transactions">true</parameter>
> >> > > > >              <!-- Setting this to true will force Slide to
> >> internally
> >> > > > > convert the username a user
> >> > > > >                   enters at login to lowercase. This is useful
> >> for users who
> >> > > > > can't be bothered
> >> > > > >                   with turning off their capslock key before
> >> logging in. -->
> >> > > > >  <parameter name="force-lowercase-login">false</parameter>
> >> > > > >  </configuration>
> >> > > > >  <data>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> uri="/">
> >> > > > >                  <!-- Subject can be:
> >> > > > >                  any user             "all"
> >> > > > >                  authenticated user   "authenticated"
> >> > > > >                  unauthenticated user "unauthenticated"
> >> > > > >                  self                 "self"
> >> > > > >                  owner of resource    "owner"
> >> > > > >                  a user               "/users/john"
> >> > > > >                  a role               "/roles/admin"
> >> > > > >                  -->
> >> > > > >  <permission action="all" subject="/roles/root"
> >> inheritable="true"/>
> >> > > > >  <permission action="/actions/read-acl" subject="all"
> >> inheritable="true"
> >> > > > > negative="true"/>
> >> > > > >  <permission action="/actions/write-acl" subject="all"
> >> inheritable="true"
> >> > > > > negative="true"/>
> >> > > > >  <permission action="/actions/unlock" subject="all"
> >> inheritable="true"
> >> > > > > negative="true"/>
> >> > > > >  <permission action="/actions/read" subject="all"
> >> inheritable="true"/>
> >> > > > >  <!-- db store -->
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> uri="/db">
> >> > > > >  <permission action="all" subject="unauthenticated"
> >> inheritable="true"/>
> >> > > > >                      <!--
> >> > > > >                      <permission action="/actions/write"
> >> > > > > subject="/roles/user" inheritable="true"/>
> >> > > > >                      <permission action="/actions/read-acl"
> >> subject="owner"
> >> > > > > inheritable="true"/>
> >> > > > >                      -->
> >> > > > >  </objectnode>
> >> > > > >                  <!-- /users -->
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/users">
> >> > > > >  <permission action="all" subject="self" inheritable="true"/>
> >> > > > >  <permission action="all" subject="/roles/projector"
> >> inheritable="true"/>
> >> > > > >  <permission action="all" subject="unauthenticated"
> >> inheritable="true"
> >> > > > > negative="true"/>
> >> > > > >                      <!-- /users/root represents the
> >> administrator -->
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/users/root">
> >> > > > >  <revision>
> >> > > > >  <property namespace="http://jakarta.apache.org/slide/"
> >> > > > > name="password">root</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >                      <!-- /users/john and /users/john2 represent
> >> > > > > authenticated users -->
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/users/john">
> >> > > > >  <revision>
> >> > > > >  <property namespace="http://jakarta.apache.org/slide/"
> >> > > > > name="password">john</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/users/john2">
> >> > > > >  <revision>
> >> > > > >  <property namespace="http://jakarta.apache.org/slide/"
> >> > > > > name="password">john2</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >                      <!-- /users/guest represents an
> >> authenticated or
> >> > > > > unauthenticated guest user -->
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/users/guest">
> >> > > > >  <revision>
> >> > > > >  <property namespace="http://jakarta.apache.org/slide/"
> >> > > > > name="password">guest</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/users/projector">
> >> > > > >  <revision>
> >> > > > >  <property namespace="http://jakarta.apache.org/slide/"
> >> > > > > name="password">projector</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  </objectnode>
> >> > > > >                  <!-- /roles -->
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/roles">
> >> > > > >  <permission action="all" subject="self" inheritable="true"/>
> >> > > > >  <permission action="all" subject="/roles/projector"
> >> inheritable="true"/>
> >> > > > >  <permission action="all" subject="unauthenticated"
> >> inheritable="true"
> >> > > > > negative="true"/>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/roles/root">
> >> > > > >  <revision>
> >> > > > >  <property name="group-member-set">[CDATA[<D:href
> >> > > > > xmlns:D='DAV:'>/users/root</D:href>]]</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/roles/user">
> >> > > > >  <revision>
> >> > > > >  <property name="group-member-set">[CDATA[<D:href
> >> > > > > xmlns:D='DAV:'>/users/john</D:href><D:href
> >> > > > > xmlns:D='DAV:'>/users/john2</D:href><D:href
> >> > > > > xmlns:D='DAV:'>/users/root</D:href><D:href
> >> > > > > xmlns:D='DAV:'>/users/projector</D:href>]]</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/roles/guest">
> >> > > > >  <revision>
> >> > > > >  <property name="group-member-set">[CDATA[<D:href
> >> > > > > xmlns:D='DAV:'>/users/guest</D:href>]]</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/roles/projector">
> >> > > > >  <revision>
> >> > > > >  <property name="group-member-set">[CDATA[<D:href
> >> > > > > xmlns:D='DAV:'>/users/root</D:href><D:href
> >> > > > > xmlns:D='DAV:'>/users/projector</D:href>]]</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  </objectnode>
> >> > > > >                  <!-- action -->
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions">
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions/read">
> >> > > > >  <revision>
> >> > > > >  <property name="privilege-member-set">[CDATA[<D:href
> >> > > > > xmlns:D='DAV:'>/actions/read-acl</D:href> <D:href
> >> > > > > xmlns:D='DAV:'>/actions/read-current-user-privilege-set</D:href>]]</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions/read-acl">
> >> > > > >  <revision>
> >> > > > >  <property name="privilege-member-set"/>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions/read-current-user-privilege-set">
> >> > > > >  <revision>
> >> > > > >  <property name="privilege-member-set"/>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions/write">
> >> > > > >  <revision>
> >> > > > >  <property name="privilege-member-set">[CDATA[<D:href
> >> > > > > xmlns:D='DAV:'>/actions/write-acl</D:href> <D:href
> >> > > > > xmlns:D='DAV:'>/actions/write-properties</D:href> <D:href
> >> > > > > xmlns:D='DAV:'>/actions/write-content</D:href>]]</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions/write-acl">
> >> > > > >  <revision>
> >> > > > >  <property name="privilege-member-set"/>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions/write-properties">
> >> > > > >  <revision>
> >> > > > >  <property name="privilege-member-set"/>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions/write-content">
> >> > > > >  <revision>
> >> > > > >  <property name="privilege-member-set">[CDATA[<D:href
> >> > > > > xmlns:D='DAV:'>/actions/bind</D:href> <D:href
> >> > > > > xmlns:D='DAV:'>/actions/unbind</D:href>]]</property>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions/bind">
> >> > > > >  <revision>
> >> > > > >  <property name="privilege-member-set"/>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions/unbind">
> >> > > > >  <revision>
> >> > > > >  <property name="privilege-member-set"/>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> >> > > > > uri="/actions/unlock">
> >> > > > >  <revision>
> >> > > > >  <property name="privilege-member-set"/>
> >> > > > >  </revision>
> >> > > > >  </objectnode>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/files">
> >> > > > >  <permission action="all" subject="unauthenticated"
> >> inheritable="true"/>
> >> > > > >  <permission action="/actions/write" subject="/roles/user"
> >> > > > > inheritable="true"/>
> >> > > > >  <permission action="/actions/read-acl" subject="owner"
> >> inheritable="true"/>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/projector">
> >> > > > >  <permission action="all" subject="unauthenticated"
> >> inheritable="true"/>
> >> > > > >  <permission action="/actions/write" subject="/roles/projector"
> >> > > > > inheritable="true"/>
> >> > > > >  <permission action="/actions/read-acl" subject="owner"
> >> inheritable="true"/>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/projector/work"></objectnode>
> >> > > > >  </objectnode>
> >> > > > >                  <!-- DeltaV: default history and workspace
> >> paths -->
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/history">
> >> > > > >  <permission action="all" subject="unauthenticated"
> >> inheritable="true"/>
> >> > > > >  <permission action="/actions/write" subject="/roles/user"
> >> > > > > inheritable="true"/>
> >> > > > >  <permission action="/actions/read-acl" subject="owner"
> >> inheritable="true"/>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/workspace">
> >> > > > >  <permission action="all" subject="unauthenticated"
> >> inheritable="true"/>
> >> > > > >  <permission action="/actions/write" subject="/roles/user"
> >> > > > > inheritable="true"/>
> >> > > > >  <permission action="/actions/read-acl" subject="owner"
> >> inheritable="true"/>
> >> > > > >  </objectnode>
> >> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> >> > > > > uri="/workingresource">
> >> > > > >  <permission action="all" subject="unauthenticated"
> >> inheritable="true"/>
> >> > > > >  <permission action="/actions/write" subject="/roles/user"
> >> > > > > inheritable="true"/>
> >> > > > >  <permission action="/actions/read-acl" subject="owner"
> >> inheritable="true"/>
> >> > > > >  </objectnode>
> >> > > > >  </objectnode>
> >> > > > >  </data>
> >> > > > >  </namespace>
> >> > > > >      <!--
> >> > > > >      DeltaV global parameters
> >> > > > >      ========================
> >> > > > >      * historypath (mandatory=no, default="/history"):
> >> > > > >      Specifies a Slide path which determines the location where
> >> this DeltaV
> >> > > > >      server stores history data.
> >> > > > >
> >> > > > >      * workspacepath (mandatory=no, default="/workspace"):
> >> > > > >      Specifies a Slide path which determines the location where
> >> this DeltaV
> >> > > > >      server allows workspaces to reside.
> >> > > > >
> >> > > > >      * workingresourcepath (mandatory=no,
> >> default="/workingresource"):
> >> > > > >      Specifies a Slide path which determines the location where
> >> this DeltaV
> >> > > > >      server stores working resources.
> >> > > > >
> >> > > > >      * auto-version (mandatory=no, default="checkout-checkin"):
> >> > > > >      Controls the DeltaV auto-version behaviour.
> >> > > > >
> >> > > > >      * auto-version-control (mandatory=no, default="false"):
> >> > > > >      Indicates if a resource just created by a PUT should be set
> >> under
> >> > > > >      version-control.
> >> > > > >
> >> > > > >      * versioncontrol-exclude (mandatory=no, default=""):
> >> > > > >      Specifies a Slide path which determines resources which are
> >> excluded
> >> > > > > from version-control.
> >> > > > >      The default value "" makes no path being excluded.
> >> > > > >
> >> > > > >      * checkout-fork (mandatory=no, default="forbidden"):
> >> > > > >      Controls the DeltaV check-out behaviour when a version is
> >> already
> >> > > > >      checked-out or has a successor.
> >> > > > >
> >> > > > >      * checkin-fork (mandatory=no, default="forbidden"):
> >> > > > >      Controls the DeltaV check-out behaviour when a version has
> >> already a
> >> > > > >      successor.
> >> > > > >
> >> > > > >      * standardLivePropertiesClass (mandatory=no,
> >> > > > >
> >> > > > > default="org.apache.slide.webdav.util.resourcekind.AbstractResourceKind"):
> >> > > > >      Determines the "agent" knowing about what the standard live
> >> properties
> >> > > > > are.
> >> > > > >      It should be a loadable class containing the following
> >> static methods:
> >> > > > >      - boolean isLiveProperty(String propName)
> >> > > > >      - boolean isProtectedProperty(String propName)
> >> > > > >      - boolean isComputedProperty(String propName)
> >> > > > >      - Set getAllLiveProperties()
> >> > > > >      - Set getAllProtectedProperties()
> >> > > > >      - Set getAllComputedProperties()
> >> > > > >
> >> > > > >      * uriRedirectorClass (mandatory=no,
> >> > > > >      default="org.apache.slide.webdav.util.DeltavUriRedirector"):
> >> > > > >      Determines the URI redirector class. The DeltaV URI
> >> redirector is in
> >> > > > >      charge of the following redirections:
> >> > > > >      - version URI to history URI, e.g. /history/2/1.4 to
> >> /history/2
> >> > > > >      - latest revision number for history resource to 0.0
> >> > > > >      - latest revision number for version resource to last URI
> >> token,
> >> > > > >      e.g. /history/2/1.4 to 1.4
> >> > > > >      It should be a loadable class containing the following
> >> static methods:
> >> > > > >      - String redirectUri(String uri)
> >> > > > >      - NodeRevisionNumber redirectLatestRevisionNumber(String
> >> uri)
> >> > > > >      -->
> >> > > > >  <parameter name="historypath">/history</parameter>
> >> > > > >  <parameter name="workspacepath">/workspace</parameter>
> >> > > > >  <parameter
> >> name="workingresourcepath">/workingresource</parameter>
> >> > > > >  <parameter name="auto-version">checkout-checkin</parameter>
> >> > > > >  <parameter name="auto-version-control">false</parameter>
> >> > > > >  <parameter name="versioncontrol-exclude"/>
> >> > > > >  <parameter name="checkout-fork">forbidden</parameter>
> >> > > > >  <parameter name="checkin-fork">forbidden</parameter>
> >> > > > >
> >> > > > >
> >> > > > >      <!-- Extractor configuration -->
> >> > > > >  <extractors>
> >> > > > >  <extractor
> >> classname="org.apache.slide.extractor.SimpleXmlExtractor"
> >> > > > > uri="/files/articles/test.xml">
> >> > > > >  <configuration>
> >> > > > >  <instruction property="title" xpath="/article/title/text()" />
> >> > > > >  <instruction property="summary" xpath="/article/summary/text()"
> >> />
> >> > > > >  </configuration>
> >> > > > >  </extractor>
> >> > > > >  <extractor
> >> classname="org.apache.slide.extractor.OfficeExtractor"
> >> > > > > uri="/files/docs/">
> >> > > > >  <configuration>
> >> > > > >  <instruction property="author" id="SummaryInformation-0-4" />
> >> > > > >  <instruction property="application"
> >> id="SummaryInformation-0-18" />
> >> > > > >  </configuration>
> >> > > > >  </extractor>
> >> > > > >  </extractors>
> >> > > > >
> >> > > > >      <!-- Event configuration -->
> >> > > > >  <events>
> >> > > > >  <event classname="org.apache.slide.webdav.event.WebdavEvent"
> >> enable="true"
> >> > > > > />
> >> > > > >  <event classname="org.apache.slide.event.ContentEvent"
> >> enable="true" />
> >> > > > >  <event classname="org.apache.slide.event.ContentEvent"
> >> method="retrieve"
> >> > > > > enable="false" />
> >> > > > >  <event classname="org.apache.slide.event.EventCollection"
> >> enable="true" />
> >> > > > >  <event classname="org.apache.slide.event.TransactionEvent"
> >> enable="true" />
> >> > > > >
> >> > > > >  <event classname="org.apache.slide.event.MacroEvent"
> >> enable="true"/>
> >> > > > >
> >> > > > >          <!--listener
> >> classname="org.apache.slide.util.event.EventLogger"
> >> > > > > /-->
> >> > > > >  <listener
> >> classname="org.apache.slide.event.VetoableEventCollector" />
> >> > > > >  <listener
> >> classname="org.apache.slide.event.TransientEventCollector" />
> >> > > > >  <listener
> >> classname="org.apache.slide.webdav.event.NotificationTrigger">
> >> > > > >  <configuration>
> >> > > > >  <notification include-events="false" />
> >> > > > >  <persist-subscriptions filename="subscriptions.xml" />
> >> > > > >  </configuration>
> >> > > > >  </listener>
> >> > > > >  <listener
> >> classname="org.apache.slide.extractor.PropertyExtractorTrigger"
> >> > > > > />
> >> > > > >  <listener classname="org.apache.slide.search.IndexTrigger">
> >> > > > >  <configuration>
> >> > > > >  <indexer classname="org.apache.slide.search.LoggingIndexer"
> >> > > > > synchronous="false" uri="/files/articles" />
> >> > > > >  </configuration>
> >> > > > >  </listener>
> >> > > > >
> >> > > > >  <!-- Uncomment for cluster support. Be sure to local-host and
> >> > > > > repository-host -->
> >> > > > >  <!--
> >> > > > >  <listener
> >> classname="org.apache.slide.cluster.ClusterCacheRefresher">
> >> > > > >  <configuration>
> >> > > > >  <node local-host="local.host.domain"
> >> > > > >        local-port="4444"
> >> > > > >    repository-host="remote.host.domain"
> >> > > > >    repository-port="8080"
> >> > > > >    repository-protocol="http"
> >> > > > >    username="root"
> >> > > > >    password="root"
> >> > > > >    base-uri="/files/"
> >> > > > >  />
> >> > > > >  </configuration>
> >> > > > >  </listener>
> >> > > > >  -->
> >> > > > >
> >> > > > >  <listener
> >> classname="org.apache.slide.macro.MacroPropertyUpdater">
> >> > > > >            <!-- Listener that updates some properties if
> >> resources are
> >> > > > >                 copied or moved.  This requires MacroEvents
> >> enabled (at
> >> > > > >                 least methods copy and move) -->
> >> > > > >  <configuration>
> >> > > > >  <update-displayname>true</update-displayname>
> >> > > > >  <update-owner-on-move>false</update-owner-on-move>
> >> > > > >  <update-owner-on-copy>true</update-owner-on-copy>
> >> > > > >  </configuration>
> >> > > > >  </listener>
> >> > > > >  </events>
> >> > > > >  </slide>
> >> > > > >
> >> > > > >  Stack Trace:
> >> > > > >  ==========
> >> > > > >
> >> > > > >  19 Nov 2004 15:55:05 -
> >> org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter
> >> > > > > - ERROR - SQL error 1205 on /db/load_test/user_3: Deadlock found
> >> when trying
> >> > > > > to get lock; Try restarting transaction,  message from server:
> >> "Lock wait
> >> > > > > timeout exceeded; Try restarting transaction"
> >> > > > >  java.sql.SQLException: Deadlock found when trying to get lock;
> >> Try
> >> > > > > restarting transaction,  message from server: "Lock wait timeout
> >> exceeded;
> >> > > > > Try restarting transaction"
> >> > > > >          at
> >> com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
> >> > > > >          at
> >> com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
> >> > > > >          at
> >> com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
> >> > > > >          at
> >> com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
> >> > > > >          at
> >> > > > > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
> >> > > > >          at
> >> > > > > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
> >> > > > >          at
> >> > > > > org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
> >> > > > >          at
> >> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:1345)
> >> > > > >          at
> >> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
> >> > > > >          at
> >> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
> >> > > > >          at
> >> > > > > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
> >> > > > >          at
> >> > > > > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
> >> > > > >          at
> >> > > > > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
> >> > > > >          at
> >> > > > > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
> >> > > > >          at
> >> > > > > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
> >> > > > >          at
> >> > > > > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
> >> > > > >          at
> >> > > > > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
> >> > > > >          at
> >> > > > > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
> >> > > > >          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:462)
> >> > > > >          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:117)
> >> > > > >          at
> >> > > > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> >> > > > >          at
> >> > > > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> >> > > > >          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.processConnection(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)
> >> > > > >  org.apache.slide.common.ServiceAccessException: Service
> >> > > > > org.apache.slide.store.impl.rdbms.JDBCStore@2bfdff access error
> >> : Deadlock
> >> > > > > found when trying to get lock; Try restarting transaction,
> >> message from
> >> > > > > server: "Lock wait timeout exceeded; Try restarting transaction"
> >> > > > >          at
> >> > > > > org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
> >> > > > >          at
> >> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
> >> > > > >          at
> >> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
> >> > > > >          at
> >> > > > > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
> >> > > > >          at
> >> > > > > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
> >> > > > >          at
> >> > > > > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
> >> > > > >          at
> >> > > > > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
> >> > > > >          at
> >> > > > > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
> >> > > > >          at
> >> > > > > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
> >> > > > >          at
> >> > > > > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
> >> > > > >          at
> >> > > > > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
> >> > > > >          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:462)
> >> > > > >          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:117)
> >> > > > >          at
> >> > > > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> >> > > > >          at
> >> > > > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> >> > > > >          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.processConnection(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)
> >> > > > >  http-8080-Processor11, 19-Nov-2004 15:52:31, unauthenticated,
> >> PUT, 500
> >> > > > > "Internal Server Error", 153875 ms,
> >> /db/load_test/user_3/dummy_1100908351664
> >> > > > >
> >> > > > >
> >> > > > >
> >> > > > >  -Mirko
> >> > > > >
> >> > > > >
> >> > > > >
> >> > > > >
> >> > > > >  On Fri, 2004-11-19 at 16:17, Oliver Zeigermann wrote:
> >> > > > >  Make sure you have <parameter
> >> name="sequential-mode">full</parameter>
> >> > > > > <parameter name="all-methods-in-transactions">true</parameter>
> >> in the
> >> > > > > configuration sections of Domain.xml which is default for Slide
> >> 2.1b2. I
> >> > > > > have run concurrent tests with 20 threads all writing to the
> >> same collection
> >> > > > > resp. to different ones. One problems.... Oliver On Sat, 20 Nov
> >> 2004
> >> > > > > 01:05:54 +0100, Oliver Zeigermann <ol...@gmail.com>
> >> wrote: >
> >> > > > > Please send your Domain.xml and the stack traces of said
> >> exceptions. > You
> >> > > > > said your were using 2.1b2? > > Oliver
> >> > > > >
> >> > > >
> >> > >
> >> >
> >> >
> >> >
> >>
> >
> > ---------------------------------------------------------------------
> > 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
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by mf...@digitalchocolate.com.
Thanks a lot for the many updates... I actually don't have access to most
of my test data right now, as it is at work. I'll try my JMeter test again
on Monday with compression enabled, and I'll also take a look at your
Junit test case.

The Domain.xml I sent you was indeed the one that was failing. I am using
MySQL 4.0.18. We have talked about potentially moving to 4.1 at some
point, but for now our production environment depends on 4.0.18. Are there
any database settings that I should tweak (e.g. regarding locking?).

-Mirko


> Created a testcase where many threads effectively at random do
> get,put,delete on the *same* file. I guess this is the hardest
> concurrency test, the prorgrammer's night mare, right?
>
> And it worked with both the 2.1 locking and the new one in 2.2. Only
> thing I did was to reduce the number of connections to 10 as I do not
> know how many internal conncections MySQL has by default and how it
> reacts when it runs out of connections. Some dbs throw errors instead
> of waiting then...
>
> Anyway, the test is at
>
> testsuite\testsuite\junit\xmltestcases\functional\extra\multi-user\getPut\getPutSame.xml
>
> in cvs head. Maybe you can tune it to reveal the deadlocks. I will
> have an additional look at it then.
>
> Oliver
>
> On Sat, 20 Nov 2004 14:42:44 +0100, Oliver Zeigermann
> <ol...@gmail.com> wrote:
>> ... and if you provided a test case that revealed any more deadlock I
>> promise that I will try to help you further.
>>
>> Oliver
>>
>> On Sat, 20 Nov 2004 14:40:47 +0100, Oliver Zeigermann
>>
>>
>> <ol...@gmail.com> wrote:
>> > And finally took the time to check it with MySQL 4.1 with the attached
>> > Domain.xml which differs from yours in details only and:
>> >
>> > no deadlocks, no conflicts, no problems.
>> >
>> > Could you describe how your test scenario looks like? Is your attached
>> > Domain.xml really the one you used for testing?
>> >
>> > Oliver
>> >
>> > On Sat, 20 Nov 2004 13:27:36 +0100, Oliver Zeigermann
>> >
>> >
>> > <ol...@gmail.com> wrote:
>> > > I just tried this
>> > >
>> > > TProcessor.CMD -pattern *cases\\functional\\extra\\multi-user*
>> -users
>> > > 20 -iterations 10
>> > >
>> > > which is 20 threads repeating uploads, deletes for 10 times and
>> > > meanwhile browsed Slide with the Windows explorer and it worked
>> > > without deadlocks.
>> > >
>> > > Caching was turned off as well.
>> > >
>> > > However, my store is the tx file one and I can not exclude there are
>> > > still programming errors in the MySQL store as I have never used it.
>> > > Lately problems were reported with other db stores when not using
>> > > compression mode. Could you try it again with compression turned on
>> > > and see if this changes anything.
>> > >
>> > > Oliver
>> > >
>> > > On Sat, 20 Nov 2004 09:31:17 +0100, Oliver Zeigermann
>> > >
>> > >
>> > > <ol...@gmail.com> wrote:
>> > > > OK, thanks for providing that info. I will have a look at it ASAP.
>> > > > Which MySQL version are you using?
>> > > >
>> > > > Oliver
>> > > >
>> > > >
>> > > > On Fri, 19 Nov 2004 17:44:11 -0800, Mirko Froehlich
>> > > >
>> > > >
>> > > > <mf...@digitalchocolate.com> wrote:
>> > > > >  Yes, I'm using 2.1b2. I have copied my domain.xml below. It
>> does have the
>> > > > > two parameters you mentioned. One thing I should mention is that
>> I disabled
>> > > > > caching, because I really wanted to simulate the effect of
>> iterating over
>> > > > > new content without the effects of caching. My domain.xml
>> defines both a
>> > > > > text and a JDBC store, but the JDBC store is the one I'm using
>> for this
>> > > > > test. I have also included one of the stack traces below.
>> > > > >
>> > > > >
>> > > > >  Domain.xml:
>> > > > >  =========
>> > > > >
>> > > > >  <?xml version="1.0"?>
>> > > > >  <slide>
>> > > > >  <namespace name="slide">
>> > > > >  <definition>
>> > > > >  <store name="tx">
>> > > > >  <!-- cache settings (added by mirko) -->
>> > > > >  <parameter name="cache-mode">off</parameter>
>> > > > >  <parameter name="enable-content-caching">false</parameter>
>> > > > >  <parameter name="content-cache-size">1000</parameter>
>> > > > >  <parameter name="object-cache-size">1000</parameter>
>> > > > >
>> > > > >  <parameter name="tlock-timeout">120</parameter>
>> > > > >  <nodestore
>> > > > > classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
>> > > > >  <parameter
>> > > > > name="rootpath">/usr/local/jakarta-slide/repository/store/metadata</parameter>
>> > > > >  <parameter
>> > > > > name="workpath">/usr/local/jakarta-slide/repository/work/metadata</parameter>
>> > > > >  <parameter name="defer-saving">true</parameter>
>> > > > >  <parameter name="timeout">120</parameter>
>> > > > >  </nodestore>
>> > > > >  <sequencestore
>> classname="org.apache.slide.store.txfile.FileSequenceStore">
>> > > > >  <parameter
>> > > > > name="rootpath">/usr/local/jakarta-slide/repository/store/sequence</parameter>
>> > > > >  </sequencestore>
>> > > > >  <securitystore>
>> > > > >  <reference store="nodestore"/>
>> > > > >  </securitystore>
>> > > > >  <lockstore>
>> > > > >  <reference store="nodestore"/>
>> > > > >  </lockstore>
>> > > > >  <revisiondescriptorsstore>
>> > > > >  <reference store="nodestore"/>
>> > > > >  </revisiondescriptorsstore>
>> > > > >  <revisiondescriptorstore>
>> > > > >  <reference store="nodestore"/>
>> > > > >  </revisiondescriptorstore>
>> > > > >  <contentstore
>> classname="org.apache.slide.store.txfile.TxFileContentStore">
>> > > > >  <parameter
>> > > > > name="rootpath">/usr/local/jakarta-slide/repository/store/content</parameter>
>> > > > >  <parameter
>> > > > > name="workpath">/usr/local/jakarta-slide/repository/work/content</parameter>
>> > > > >  <parameter name="defer-saving">true</parameter>
>> > > > >  <parameter name="timeout">120</parameter>
>> > > > >  </contentstore>
>> > > > >                  <!-- uncomment if you want to use the sample
>> Indexer -->
>> > > > >                  <!-- be sure to have Lucene in your classpath
>> > > > > -->
>> > > > >                  <!--
>> > > > >                  <contentindexer
>> > > > > classname="org.apache.slide.index.SampleTxtContainsIndexer">
>> > > > >                  <parameter name="indexpath">./index</parameter>
>> > > > >                  </contentindexer>
>> > > > >          -->
>> > > > >  </store>
>> > > > >  <store name="db">
>> > > > >  <!-- cache settings (added by mirko) -->
>> > > > >  <parameter name="cache-mode">off</parameter>
>> > > > >  <parameter name="enable-content-caching">false</parameter>
>> > > > >  <parameter name="content-cache-size">1000</parameter>
>> > > > >  <parameter name="object-cache-size">1000</parameter>
>> > > > >
>> > > > >  <nodestore
>> classname="org.apache.slide.store.impl.rdbms.JDBCStore">
>> > > > >  <parameter
>> > > > > name="adapter">org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter</parameter>
>> > > > >  <parameter name="driver">com.mysql.jdbc.Driver</parameter>
>> > > > >  <parameter name="url">jdbc:mysql://localhost/slide</parameter>
>> > > > >  <parameter name="user">slide</parameter>
>> > > > >  <parameter name="password">slide</parameter>
>> > > > >  <parameter name="dbcpPooling">true</parameter>
>> > > > >  <parameter name="maxPooledConnections">30</parameter>
>> > > > >  <parameter name="isolation">SERIALIZABLE</parameter>
>> > > > >  <parameter name="compress">false</parameter>
>> > > > >  </nodestore>
>> > > > >  <contentstore>
>> > > > >  <reference store="nodestore" />
>> > > > >  </contentstore>
>> > > > >  <securitystore>
>> > > > >  <reference store="nodestore" />
>> > > > >  </securitystore>
>> > > > >  <lockstore>
>> > > > >  <reference store="nodestore" />
>> > > > >  </lockstore>
>> > > > >  <revisiondescriptorsstore>
>> > > > >  <reference store="nodestore" />
>> > > > >  </revisiondescriptorsstore>
>> > > > >  <revisiondescriptorstore>
>> > > > >  <reference store="nodestore" />
>> > > > >  </revisiondescriptorstore>
>> > > > >  </store>
>> > > > >  <scope match="/" store="tx"/>
>> > > > >  <scope match="/db" store="db"/>
>> > > > >  </definition>
>> > > > >  <configuration>
>> > > > >              <!-- Actions mapping -->
>> > > > >  <read-object>/actions/read</read-object>
>> > > > >  <create-object>/actions/write</create-object>
>> > > > >  <remove-object>/actions/write</remove-object>
>> > > > >  <grant-permission>/actions/write-acl</grant-permission>
>> > > > >  <revoke-permission>/actions/write-acl</revoke-permission>
>> > > > >  <read-permissions>/actions/read-acl</read-permissions>
>> > > > > <read-own-permissions>/actions/read-current-user-privilege-set</read-own-permissions>
>> > > > >  <lock-object>/actions/write</lock-object>
>> > > > >  <kill-lock>/actions/unlock</kill-lock>
>> > > > >  <read-locks>/actions/read</read-locks>
>> > > > >  <read-revision-metadata>/actions/read</read-revision-metadata>
>> > > > > <create-revision-metadata>/actions/write-properties</create-revision-metadata>
>> > > > > <modify-revision-metadata>/actions/write-properties</modify-revision-metadata>
>> > > > > <remove-revision-metadata>/actions/write-properties</remove-revision-metadata>
>> > > > >  <read-revision-content>/actions/read</read-revision-content>
>> > > > >  <create-revision-content>/actions/write-content</create-revision-content>
>> > > > >  <modify-revision-content>/actions/write-content</modify-revision-content>
>> > > > >  <remove-revision-content>/actions/write-content</remove-revision-content>
>> > > > >  <bind-member>/actions/bind</bind-member>
>> > > > >  <unbind-member>/actions/unbind</unbind-member>
>> > > > >              <!-- Paths configuration -->
>> > > > >  <userspath>/users</userspath>
>> > > > >  <rolespath>/roles</rolespath>
>> > > > >  <actionspath>/actions</actionspath>
>> > > > >  <filespath>/files</filespath>
>> > > > >  <parameter name="dav">true</parameter>
>> > > > >  <parameter name="standalone">true</parameter>
>> > > > >  <parameter name="acl_inheritance_type">path</parameter>
>> > > > >              <!-- Nested roles:  means no nesting (default), 1
>> means one
>> > > > > sublevel, etc. -->
>> > > > >  <parameter name="nested_roles_maxdepth">0</parameter>
>> > > > >              <!-- Can be "off", "write" and "full" -->
>> > > > >  <parameter name="sequential-mode">full</parameter>
>> > > > >              <!-- "false" lets all read-only methods be executed
>> outside of
>> > > > > transactions -->
>> > > > >  <parameter name="all-methods-in-transactions">true</parameter>
>> > > > >              <!-- Setting this to true will force Slide to
>> internally
>> > > > > convert the username a user
>> > > > >                   enters at login to lowercase. This is useful
>> for users who
>> > > > > can't be bothered
>> > > > >                   with turning off their capslock key before
>> logging in. -->
>> > > > >  <parameter name="force-lowercase-login">false</parameter>
>> > > > >  </configuration>
>> > > > >  <data>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> uri="/">
>> > > > >                  <!-- Subject can be:
>> > > > >                  any user             "all"
>> > > > >                  authenticated user   "authenticated"
>> > > > >                  unauthenticated user "unauthenticated"
>> > > > >                  self                 "self"
>> > > > >                  owner of resource    "owner"
>> > > > >                  a user               "/users/john"
>> > > > >                  a role               "/roles/admin"
>> > > > >                  -->
>> > > > >  <permission action="all" subject="/roles/root"
>> inheritable="true"/>
>> > > > >  <permission action="/actions/read-acl" subject="all"
>> inheritable="true"
>> > > > > negative="true"/>
>> > > > >  <permission action="/actions/write-acl" subject="all"
>> inheritable="true"
>> > > > > negative="true"/>
>> > > > >  <permission action="/actions/unlock" subject="all"
>> inheritable="true"
>> > > > > negative="true"/>
>> > > > >  <permission action="/actions/read" subject="all"
>> inheritable="true"/>
>> > > > >  <!-- db store -->
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> uri="/db">
>> > > > >  <permission action="all" subject="unauthenticated"
>> inheritable="true"/>
>> > > > >                      <!--
>> > > > >                      <permission action="/actions/write"
>> > > > > subject="/roles/user" inheritable="true"/>
>> > > > >                      <permission action="/actions/read-acl"
>> subject="owner"
>> > > > > inheritable="true"/>
>> > > > >                      -->
>> > > > >  </objectnode>
>> > > > >                  <!-- /users -->
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/users">
>> > > > >  <permission action="all" subject="self" inheritable="true"/>
>> > > > >  <permission action="all" subject="/roles/projector"
>> inheritable="true"/>
>> > > > >  <permission action="all" subject="unauthenticated"
>> inheritable="true"
>> > > > > negative="true"/>
>> > > > >                      <!-- /users/root represents the
>> administrator -->
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/users/root">
>> > > > >  <revision>
>> > > > >  <property namespace="http://jakarta.apache.org/slide/"
>> > > > > name="password">root</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >                      <!-- /users/john and /users/john2 represent
>> > > > > authenticated users -->
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/users/john">
>> > > > >  <revision>
>> > > > >  <property namespace="http://jakarta.apache.org/slide/"
>> > > > > name="password">john</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/users/john2">
>> > > > >  <revision>
>> > > > >  <property namespace="http://jakarta.apache.org/slide/"
>> > > > > name="password">john2</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >                      <!-- /users/guest represents an
>> authenticated or
>> > > > > unauthenticated guest user -->
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/users/guest">
>> > > > >  <revision>
>> > > > >  <property namespace="http://jakarta.apache.org/slide/"
>> > > > > name="password">guest</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/users/projector">
>> > > > >  <revision>
>> > > > >  <property namespace="http://jakarta.apache.org/slide/"
>> > > > > name="password">projector</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  </objectnode>
>> > > > >                  <!-- /roles -->
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/roles">
>> > > > >  <permission action="all" subject="self" inheritable="true"/>
>> > > > >  <permission action="all" subject="/roles/projector"
>> inheritable="true"/>
>> > > > >  <permission action="all" subject="unauthenticated"
>> inheritable="true"
>> > > > > negative="true"/>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/roles/root">
>> > > > >  <revision>
>> > > > >  <property name="group-member-set">[CDATA[<D:href
>> > > > > xmlns:D='DAV:'>/users/root</D:href>]]</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/roles/user">
>> > > > >  <revision>
>> > > > >  <property name="group-member-set">[CDATA[<D:href
>> > > > > xmlns:D='DAV:'>/users/john</D:href><D:href
>> > > > > xmlns:D='DAV:'>/users/john2</D:href><D:href
>> > > > > xmlns:D='DAV:'>/users/root</D:href><D:href
>> > > > > xmlns:D='DAV:'>/users/projector</D:href>]]</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/roles/guest">
>> > > > >  <revision>
>> > > > >  <property name="group-member-set">[CDATA[<D:href
>> > > > > xmlns:D='DAV:'>/users/guest</D:href>]]</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/roles/projector">
>> > > > >  <revision>
>> > > > >  <property name="group-member-set">[CDATA[<D:href
>> > > > > xmlns:D='DAV:'>/users/root</D:href><D:href
>> > > > > xmlns:D='DAV:'>/users/projector</D:href>]]</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  </objectnode>
>> > > > >                  <!-- action -->
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions">
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions/read">
>> > > > >  <revision>
>> > > > >  <property name="privilege-member-set">[CDATA[<D:href
>> > > > > xmlns:D='DAV:'>/actions/read-acl</D:href> <D:href
>> > > > > xmlns:D='DAV:'>/actions/read-current-user-privilege-set</D:href>]]</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions/read-acl">
>> > > > >  <revision>
>> > > > >  <property name="privilege-member-set"/>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions/read-current-user-privilege-set">
>> > > > >  <revision>
>> > > > >  <property name="privilege-member-set"/>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions/write">
>> > > > >  <revision>
>> > > > >  <property name="privilege-member-set">[CDATA[<D:href
>> > > > > xmlns:D='DAV:'>/actions/write-acl</D:href> <D:href
>> > > > > xmlns:D='DAV:'>/actions/write-properties</D:href> <D:href
>> > > > > xmlns:D='DAV:'>/actions/write-content</D:href>]]</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions/write-acl">
>> > > > >  <revision>
>> > > > >  <property name="privilege-member-set"/>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions/write-properties">
>> > > > >  <revision>
>> > > > >  <property name="privilege-member-set"/>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions/write-content">
>> > > > >  <revision>
>> > > > >  <property name="privilege-member-set">[CDATA[<D:href
>> > > > > xmlns:D='DAV:'>/actions/bind</D:href> <D:href
>> > > > > xmlns:D='DAV:'>/actions/unbind</D:href>]]</property>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions/bind">
>> > > > >  <revision>
>> > > > >  <property name="privilege-member-set"/>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions/unbind">
>> > > > >  <revision>
>> > > > >  <property name="privilege-member-set"/>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
>> > > > > uri="/actions/unlock">
>> > > > >  <revision>
>> > > > >  <property name="privilege-member-set"/>
>> > > > >  </revision>
>> > > > >  </objectnode>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/files">
>> > > > >  <permission action="all" subject="unauthenticated"
>> inheritable="true"/>
>> > > > >  <permission action="/actions/write" subject="/roles/user"
>> > > > > inheritable="true"/>
>> > > > >  <permission action="/actions/read-acl" subject="owner"
>> inheritable="true"/>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/projector">
>> > > > >  <permission action="all" subject="unauthenticated"
>> inheritable="true"/>
>> > > > >  <permission action="/actions/write" subject="/roles/projector"
>> > > > > inheritable="true"/>
>> > > > >  <permission action="/actions/read-acl" subject="owner"
>> inheritable="true"/>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/projector/work"></objectnode>
>> > > > >  </objectnode>
>> > > > >                  <!-- DeltaV: default history and workspace
>> paths -->
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/history">
>> > > > >  <permission action="all" subject="unauthenticated"
>> inheritable="true"/>
>> > > > >  <permission action="/actions/write" subject="/roles/user"
>> > > > > inheritable="true"/>
>> > > > >  <permission action="/actions/read-acl" subject="owner"
>> inheritable="true"/>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/workspace">
>> > > > >  <permission action="all" subject="unauthenticated"
>> inheritable="true"/>
>> > > > >  <permission action="/actions/write" subject="/roles/user"
>> > > > > inheritable="true"/>
>> > > > >  <permission action="/actions/read-acl" subject="owner"
>> inheritable="true"/>
>> > > > >  </objectnode>
>> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
>> > > > > uri="/workingresource">
>> > > > >  <permission action="all" subject="unauthenticated"
>> inheritable="true"/>
>> > > > >  <permission action="/actions/write" subject="/roles/user"
>> > > > > inheritable="true"/>
>> > > > >  <permission action="/actions/read-acl" subject="owner"
>> inheritable="true"/>
>> > > > >  </objectnode>
>> > > > >  </objectnode>
>> > > > >  </data>
>> > > > >  </namespace>
>> > > > >      <!--
>> > > > >      DeltaV global parameters
>> > > > >      ========================
>> > > > >      * historypath (mandatory=no, default="/history"):
>> > > > >      Specifies a Slide path which determines the location where
>> this DeltaV
>> > > > >      server stores history data.
>> > > > >
>> > > > >      * workspacepath (mandatory=no, default="/workspace"):
>> > > > >      Specifies a Slide path which determines the location where
>> this DeltaV
>> > > > >      server allows workspaces to reside.
>> > > > >
>> > > > >      * workingresourcepath (mandatory=no,
>> default="/workingresource"):
>> > > > >      Specifies a Slide path which determines the location where
>> this DeltaV
>> > > > >      server stores working resources.
>> > > > >
>> > > > >      * auto-version (mandatory=no, default="checkout-checkin"):
>> > > > >      Controls the DeltaV auto-version behaviour.
>> > > > >
>> > > > >      * auto-version-control (mandatory=no, default="false"):
>> > > > >      Indicates if a resource just created by a PUT should be set
>> under
>> > > > >      version-control.
>> > > > >
>> > > > >      * versioncontrol-exclude (mandatory=no, default=""):
>> > > > >      Specifies a Slide path which determines resources which are
>> excluded
>> > > > > from version-control.
>> > > > >      The default value "" makes no path being excluded.
>> > > > >
>> > > > >      * checkout-fork (mandatory=no, default="forbidden"):
>> > > > >      Controls the DeltaV check-out behaviour when a version is
>> already
>> > > > >      checked-out or has a successor.
>> > > > >
>> > > > >      * checkin-fork (mandatory=no, default="forbidden"):
>> > > > >      Controls the DeltaV check-out behaviour when a version has
>> already a
>> > > > >      successor.
>> > > > >
>> > > > >      * standardLivePropertiesClass (mandatory=no,
>> > > > >
>> > > > > default="org.apache.slide.webdav.util.resourcekind.AbstractResourceKind"):
>> > > > >      Determines the "agent" knowing about what the standard live
>> properties
>> > > > > are.
>> > > > >      It should be a loadable class containing the following
>> static methods:
>> > > > >      - boolean isLiveProperty(String propName)
>> > > > >      - boolean isProtectedProperty(String propName)
>> > > > >      - boolean isComputedProperty(String propName)
>> > > > >      - Set getAllLiveProperties()
>> > > > >      - Set getAllProtectedProperties()
>> > > > >      - Set getAllComputedProperties()
>> > > > >
>> > > > >      * uriRedirectorClass (mandatory=no,
>> > > > >      default="org.apache.slide.webdav.util.DeltavUriRedirector"):
>> > > > >      Determines the URI redirector class. The DeltaV URI
>> redirector is in
>> > > > >      charge of the following redirections:
>> > > > >      - version URI to history URI, e.g. /history/2/1.4 to
>> /history/2
>> > > > >      - latest revision number for history resource to 0.0
>> > > > >      - latest revision number for version resource to last URI
>> token,
>> > > > >      e.g. /history/2/1.4 to 1.4
>> > > > >      It should be a loadable class containing the following
>> static methods:
>> > > > >      - String redirectUri(String uri)
>> > > > >      - NodeRevisionNumber redirectLatestRevisionNumber(String
>> uri)
>> > > > >      -->
>> > > > >  <parameter name="historypath">/history</parameter>
>> > > > >  <parameter name="workspacepath">/workspace</parameter>
>> > > > >  <parameter
>> name="workingresourcepath">/workingresource</parameter>
>> > > > >  <parameter name="auto-version">checkout-checkin</parameter>
>> > > > >  <parameter name="auto-version-control">false</parameter>
>> > > > >  <parameter name="versioncontrol-exclude"/>
>> > > > >  <parameter name="checkout-fork">forbidden</parameter>
>> > > > >  <parameter name="checkin-fork">forbidden</parameter>
>> > > > >
>> > > > >
>> > > > >      <!-- Extractor configuration -->
>> > > > >  <extractors>
>> > > > >  <extractor
>> classname="org.apache.slide.extractor.SimpleXmlExtractor"
>> > > > > uri="/files/articles/test.xml">
>> > > > >  <configuration>
>> > > > >  <instruction property="title" xpath="/article/title/text()" />
>> > > > >  <instruction property="summary" xpath="/article/summary/text()"
>> />
>> > > > >  </configuration>
>> > > > >  </extractor>
>> > > > >  <extractor
>> classname="org.apache.slide.extractor.OfficeExtractor"
>> > > > > uri="/files/docs/">
>> > > > >  <configuration>
>> > > > >  <instruction property="author" id="SummaryInformation-0-4" />
>> > > > >  <instruction property="application"
>> id="SummaryInformation-0-18" />
>> > > > >  </configuration>
>> > > > >  </extractor>
>> > > > >  </extractors>
>> > > > >
>> > > > >      <!-- Event configuration -->
>> > > > >  <events>
>> > > > >  <event classname="org.apache.slide.webdav.event.WebdavEvent"
>> enable="true"
>> > > > > />
>> > > > >  <event classname="org.apache.slide.event.ContentEvent"
>> enable="true" />
>> > > > >  <event classname="org.apache.slide.event.ContentEvent"
>> method="retrieve"
>> > > > > enable="false" />
>> > > > >  <event classname="org.apache.slide.event.EventCollection"
>> enable="true" />
>> > > > >  <event classname="org.apache.slide.event.TransactionEvent"
>> enable="true" />
>> > > > >
>> > > > >  <event classname="org.apache.slide.event.MacroEvent"
>> enable="true"/>
>> > > > >
>> > > > >          <!--listener
>> classname="org.apache.slide.util.event.EventLogger"
>> > > > > /-->
>> > > > >  <listener
>> classname="org.apache.slide.event.VetoableEventCollector" />
>> > > > >  <listener
>> classname="org.apache.slide.event.TransientEventCollector" />
>> > > > >  <listener
>> classname="org.apache.slide.webdav.event.NotificationTrigger">
>> > > > >  <configuration>
>> > > > >  <notification include-events="false" />
>> > > > >  <persist-subscriptions filename="subscriptions.xml" />
>> > > > >  </configuration>
>> > > > >  </listener>
>> > > > >  <listener
>> classname="org.apache.slide.extractor.PropertyExtractorTrigger"
>> > > > > />
>> > > > >  <listener classname="org.apache.slide.search.IndexTrigger">
>> > > > >  <configuration>
>> > > > >  <indexer classname="org.apache.slide.search.LoggingIndexer"
>> > > > > synchronous="false" uri="/files/articles" />
>> > > > >  </configuration>
>> > > > >  </listener>
>> > > > >
>> > > > >  <!-- Uncomment for cluster support. Be sure to local-host and
>> > > > > repository-host -->
>> > > > >  <!--
>> > > > >  <listener
>> classname="org.apache.slide.cluster.ClusterCacheRefresher">
>> > > > >  <configuration>
>> > > > >  <node local-host="local.host.domain"
>> > > > >        local-port="4444"
>> > > > >    repository-host="remote.host.domain"
>> > > > >    repository-port="8080"
>> > > > >    repository-protocol="http"
>> > > > >    username="root"
>> > > > >    password="root"
>> > > > >    base-uri="/files/"
>> > > > >  />
>> > > > >  </configuration>
>> > > > >  </listener>
>> > > > >  -->
>> > > > >
>> > > > >  <listener
>> classname="org.apache.slide.macro.MacroPropertyUpdater">
>> > > > >            <!-- Listener that updates some properties if
>> resources are
>> > > > >                 copied or moved.  This requires MacroEvents
>> enabled (at
>> > > > >                 least methods copy and move) -->
>> > > > >  <configuration>
>> > > > >  <update-displayname>true</update-displayname>
>> > > > >  <update-owner-on-move>false</update-owner-on-move>
>> > > > >  <update-owner-on-copy>true</update-owner-on-copy>
>> > > > >  </configuration>
>> > > > >  </listener>
>> > > > >  </events>
>> > > > >  </slide>
>> > > > >
>> > > > >  Stack Trace:
>> > > > >  ==========
>> > > > >
>> > > > >  19 Nov 2004 15:55:05 -
>> org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter
>> > > > > - ERROR - SQL error 1205 on /db/load_test/user_3: Deadlock found
>> when trying
>> > > > > to get lock; Try restarting transaction,  message from server:
>> "Lock wait
>> > > > > timeout exceeded; Try restarting transaction"
>> > > > >  java.sql.SQLException: Deadlock found when trying to get lock;
>> Try
>> > > > > restarting transaction,  message from server: "Lock wait timeout
>> exceeded;
>> > > > > Try restarting transaction"
>> > > > >          at
>> com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
>> > > > >          at
>> com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
>> > > > >          at
>> com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
>> > > > >          at
>> com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
>> > > > >          at
>> > > > > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
>> > > > >          at
>> > > > > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
>> > > > >          at
>> > > > > org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
>> > > > >          at
>> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:1345)
>> > > > >          at
>> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
>> > > > >          at
>> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
>> > > > >          at
>> > > > > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
>> > > > >          at
>> > > > > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
>> > > > >          at
>> > > > > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
>> > > > >          at
>> > > > > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
>> > > > >          at
>> > > > > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
>> > > > >          at
>> > > > > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
>> > > > >          at
>> > > > > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
>> > > > >          at
>> > > > > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
>> > > > >          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:462)
>> > > > >          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:117)
>> > > > >          at
>> > > > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>> > > > >          at
>> > > > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>> > > > >          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.processConnection(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)
>> > > > >  org.apache.slide.common.ServiceAccessException: Service
>> > > > > org.apache.slide.store.impl.rdbms.JDBCStore@2bfdff access error
>> : Deadlock
>> > > > > found when trying to get lock; Try restarting transaction,
>> message from
>> > > > > server: "Lock wait timeout exceeded; Try restarting transaction"
>> > > > >          at
>> > > > > org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
>> > > > >          at
>> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
>> > > > >          at
>> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
>> > > > >          at
>> > > > > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
>> > > > >          at
>> > > > > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
>> > > > >          at
>> > > > > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
>> > > > >          at
>> > > > > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
>> > > > >          at
>> > > > > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
>> > > > >          at
>> > > > > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
>> > > > >          at
>> > > > > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
>> > > > >          at
>> > > > > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
>> > > > >          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:462)
>> > > > >          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:117)
>> > > > >          at
>> > > > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>> > > > >          at
>> > > > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>> > > > >          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.processConnection(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)
>> > > > >  http-8080-Processor11, 19-Nov-2004 15:52:31, unauthenticated,
>> PUT, 500
>> > > > > "Internal Server Error", 153875 ms,
>> /db/load_test/user_3/dummy_1100908351664
>> > > > >
>> > > > >
>> > > > >
>> > > > >  -Mirko
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >  On Fri, 2004-11-19 at 16:17, Oliver Zeigermann wrote:
>> > > > >  Make sure you have <parameter
>> name="sequential-mode">full</parameter>
>> > > > > <parameter name="all-methods-in-transactions">true</parameter>
>> in the
>> > > > > configuration sections of Domain.xml which is default for Slide
>> 2.1b2. I
>> > > > > have run concurrent tests with 20 threads all writing to the
>> same collection
>> > > > > resp. to different ones. One problems.... Oliver On Sat, 20 Nov
>> 2004
>> > > > > 01:05:54 +0100, Oliver Zeigermann <ol...@gmail.com>
>> wrote: >
>> > > > > Please send your Domain.xml and the stack traces of said
>> exceptions. > You
>> > > > > said your were using 2.1b2? > > Oliver
>> > > > >
>> > > >
>> > >
>> >
>> >
>> >
>>
>
> ---------------------------------------------------------------------
> 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


Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
Created a testcase where many threads effectively at random do
get,put,delete on the *same* file. I guess this is the hardest
concurrency test, the prorgrammer's night mare, right?

And it worked with both the 2.1 locking and the new one in 2.2. Only
thing I did was to reduce the number of connections to 10 as I do not
know how many internal conncections MySQL has by default and how it
reacts when it runs out of connections. Some dbs throw errors instead
of waiting then...

Anyway, the test is at 

testsuite\testsuite\junit\xmltestcases\functional\extra\multi-user\getPut\getPutSame.xml

in cvs head. Maybe you can tune it to reveal the deadlocks. I will
have an additional look at it then.

Oliver

On Sat, 20 Nov 2004 14:42:44 +0100, Oliver Zeigermann
<ol...@gmail.com> wrote:
> ... and if you provided a test case that revealed any more deadlock I
> promise that I will try to help you further.
> 
> Oliver
> 
> On Sat, 20 Nov 2004 14:40:47 +0100, Oliver Zeigermann
> 
> 
> <ol...@gmail.com> wrote:
> > And finally took the time to check it with MySQL 4.1 with the attached
> > Domain.xml which differs from yours in details only and:
> >
> > no deadlocks, no conflicts, no problems.
> >
> > Could you describe how your test scenario looks like? Is your attached
> > Domain.xml really the one you used for testing?
> >
> > Oliver
> >
> > On Sat, 20 Nov 2004 13:27:36 +0100, Oliver Zeigermann
> >
> >
> > <ol...@gmail.com> wrote:
> > > I just tried this
> > >
> > > TProcessor.CMD -pattern *cases\\functional\\extra\\multi-user* -users
> > > 20 -iterations 10
> > >
> > > which is 20 threads repeating uploads, deletes for 10 times and
> > > meanwhile browsed Slide with the Windows explorer and it worked
> > > without deadlocks.
> > >
> > > Caching was turned off as well.
> > >
> > > However, my store is the tx file one and I can not exclude there are
> > > still programming errors in the MySQL store as I have never used it.
> > > Lately problems were reported with other db stores when not using
> > > compression mode. Could you try it again with compression turned on
> > > and see if this changes anything.
> > >
> > > Oliver
> > >
> > > On Sat, 20 Nov 2004 09:31:17 +0100, Oliver Zeigermann
> > >
> > >
> > > <ol...@gmail.com> wrote:
> > > > OK, thanks for providing that info. I will have a look at it ASAP.
> > > > Which MySQL version are you using?
> > > >
> > > > Oliver
> > > >
> > > >
> > > > On Fri, 19 Nov 2004 17:44:11 -0800, Mirko Froehlich
> > > >
> > > >
> > > > <mf...@digitalchocolate.com> wrote:
> > > > >  Yes, I'm using 2.1b2. I have copied my domain.xml below. It does have the
> > > > > two parameters you mentioned. One thing I should mention is that I disabled
> > > > > caching, because I really wanted to simulate the effect of iterating over
> > > > > new content without the effects of caching. My domain.xml defines both a
> > > > > text and a JDBC store, but the JDBC store is the one I'm using for this
> > > > > test. I have also included one of the stack traces below.
> > > > >
> > > > >
> > > > >  Domain.xml:
> > > > >  =========
> > > > >
> > > > >  <?xml version="1.0"?>
> > > > >  <slide>
> > > > >  <namespace name="slide">
> > > > >  <definition>
> > > > >  <store name="tx">
> > > > >  <!-- cache settings (added by mirko) -->
> > > > >  <parameter name="cache-mode">off</parameter>
> > > > >  <parameter name="enable-content-caching">false</parameter>
> > > > >  <parameter name="content-cache-size">1000</parameter>
> > > > >  <parameter name="object-cache-size">1000</parameter>
> > > > >
> > > > >  <parameter name="tlock-timeout">120</parameter>
> > > > >  <nodestore
> > > > > classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
> > > > >  <parameter
> > > > > name="rootpath">/usr/local/jakarta-slide/repository/store/metadata</parameter>
> > > > >  <parameter
> > > > > name="workpath">/usr/local/jakarta-slide/repository/work/metadata</parameter>
> > > > >  <parameter name="defer-saving">true</parameter>
> > > > >  <parameter name="timeout">120</parameter>
> > > > >  </nodestore>
> > > > >  <sequencestore classname="org.apache.slide.store.txfile.FileSequenceStore">
> > > > >  <parameter
> > > > > name="rootpath">/usr/local/jakarta-slide/repository/store/sequence</parameter>
> > > > >  </sequencestore>
> > > > >  <securitystore>
> > > > >  <reference store="nodestore"/>
> > > > >  </securitystore>
> > > > >  <lockstore>
> > > > >  <reference store="nodestore"/>
> > > > >  </lockstore>
> > > > >  <revisiondescriptorsstore>
> > > > >  <reference store="nodestore"/>
> > > > >  </revisiondescriptorsstore>
> > > > >  <revisiondescriptorstore>
> > > > >  <reference store="nodestore"/>
> > > > >  </revisiondescriptorstore>
> > > > >  <contentstore classname="org.apache.slide.store.txfile.TxFileContentStore">
> > > > >  <parameter
> > > > > name="rootpath">/usr/local/jakarta-slide/repository/store/content</parameter>
> > > > >  <parameter
> > > > > name="workpath">/usr/local/jakarta-slide/repository/work/content</parameter>
> > > > >  <parameter name="defer-saving">true</parameter>
> > > > >  <parameter name="timeout">120</parameter>
> > > > >  </contentstore>
> > > > >                  <!-- uncomment if you want to use the sample Indexer -->
> > > > >                  <!-- be sure to have Lucene in your classpath
> > > > > -->
> > > > >                  <!--
> > > > >                  <contentindexer
> > > > > classname="org.apache.slide.index.SampleTxtContainsIndexer">
> > > > >                  <parameter name="indexpath">./index</parameter>
> > > > >                  </contentindexer>
> > > > >          -->
> > > > >  </store>
> > > > >  <store name="db">
> > > > >  <!-- cache settings (added by mirko) -->
> > > > >  <parameter name="cache-mode">off</parameter>
> > > > >  <parameter name="enable-content-caching">false</parameter>
> > > > >  <parameter name="content-cache-size">1000</parameter>
> > > > >  <parameter name="object-cache-size">1000</parameter>
> > > > >
> > > > >  <nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
> > > > >  <parameter
> > > > > name="adapter">org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter</parameter>
> > > > >  <parameter name="driver">com.mysql.jdbc.Driver</parameter>
> > > > >  <parameter name="url">jdbc:mysql://localhost/slide</parameter>
> > > > >  <parameter name="user">slide</parameter>
> > > > >  <parameter name="password">slide</parameter>
> > > > >  <parameter name="dbcpPooling">true</parameter>
> > > > >  <parameter name="maxPooledConnections">30</parameter>
> > > > >  <parameter name="isolation">SERIALIZABLE</parameter>
> > > > >  <parameter name="compress">false</parameter>
> > > > >  </nodestore>
> > > > >  <contentstore>
> > > > >  <reference store="nodestore" />
> > > > >  </contentstore>
> > > > >  <securitystore>
> > > > >  <reference store="nodestore" />
> > > > >  </securitystore>
> > > > >  <lockstore>
> > > > >  <reference store="nodestore" />
> > > > >  </lockstore>
> > > > >  <revisiondescriptorsstore>
> > > > >  <reference store="nodestore" />
> > > > >  </revisiondescriptorsstore>
> > > > >  <revisiondescriptorstore>
> > > > >  <reference store="nodestore" />
> > > > >  </revisiondescriptorstore>
> > > > >  </store>
> > > > >  <scope match="/" store="tx"/>
> > > > >  <scope match="/db" store="db"/>
> > > > >  </definition>
> > > > >  <configuration>
> > > > >              <!-- Actions mapping -->
> > > > >  <read-object>/actions/read</read-object>
> > > > >  <create-object>/actions/write</create-object>
> > > > >  <remove-object>/actions/write</remove-object>
> > > > >  <grant-permission>/actions/write-acl</grant-permission>
> > > > >  <revoke-permission>/actions/write-acl</revoke-permission>
> > > > >  <read-permissions>/actions/read-acl</read-permissions>
> > > > > <read-own-permissions>/actions/read-current-user-privilege-set</read-own-permissions>
> > > > >  <lock-object>/actions/write</lock-object>
> > > > >  <kill-lock>/actions/unlock</kill-lock>
> > > > >  <read-locks>/actions/read</read-locks>
> > > > >  <read-revision-metadata>/actions/read</read-revision-metadata>
> > > > > <create-revision-metadata>/actions/write-properties</create-revision-metadata>
> > > > > <modify-revision-metadata>/actions/write-properties</modify-revision-metadata>
> > > > > <remove-revision-metadata>/actions/write-properties</remove-revision-metadata>
> > > > >  <read-revision-content>/actions/read</read-revision-content>
> > > > >  <create-revision-content>/actions/write-content</create-revision-content>
> > > > >  <modify-revision-content>/actions/write-content</modify-revision-content>
> > > > >  <remove-revision-content>/actions/write-content</remove-revision-content>
> > > > >  <bind-member>/actions/bind</bind-member>
> > > > >  <unbind-member>/actions/unbind</unbind-member>
> > > > >              <!-- Paths configuration -->
> > > > >  <userspath>/users</userspath>
> > > > >  <rolespath>/roles</rolespath>
> > > > >  <actionspath>/actions</actionspath>
> > > > >  <filespath>/files</filespath>
> > > > >  <parameter name="dav">true</parameter>
> > > > >  <parameter name="standalone">true</parameter>
> > > > >  <parameter name="acl_inheritance_type">path</parameter>
> > > > >              <!-- Nested roles: 0 means no nesting (default), 1 means one
> > > > > sublevel, etc. -->
> > > > >  <parameter name="nested_roles_maxdepth">0</parameter>
> > > > >              <!-- Can be "off", "write" and "full" -->
> > > > >  <parameter name="sequential-mode">full</parameter>
> > > > >              <!-- "false" lets all read-only methods be executed outside of
> > > > > transactions -->
> > > > >  <parameter name="all-methods-in-transactions">true</parameter>
> > > > >              <!-- Setting this to true will force Slide to internally
> > > > > convert the username a user
> > > > >                   enters at login to lowercase. This is useful for users who
> > > > > can't be bothered
> > > > >                   with turning off their capslock key before logging in. -->
> > > > >  <parameter name="force-lowercase-login">false</parameter>
> > > > >  </configuration>
> > > > >  <data>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/">
> > > > >                  <!-- Subject can be:
> > > > >                  any user             "all"
> > > > >                  authenticated user   "authenticated"
> > > > >                  unauthenticated user "unauthenticated"
> > > > >                  self                 "self"
> > > > >                  owner of resource    "owner"
> > > > >                  a user               "/users/john"
> > > > >                  a role               "/roles/admin"
> > > > >                  -->
> > > > >  <permission action="all" subject="/roles/root" inheritable="true"/>
> > > > >  <permission action="/actions/read-acl" subject="all" inheritable="true"
> > > > > negative="true"/>
> > > > >  <permission action="/actions/write-acl" subject="all" inheritable="true"
> > > > > negative="true"/>
> > > > >  <permission action="/actions/unlock" subject="all" inheritable="true"
> > > > > negative="true"/>
> > > > >  <permission action="/actions/read" subject="all" inheritable="true"/>
> > > > >  <!-- db store -->
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/db">
> > > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > > >                      <!--
> > > > >                      <permission action="/actions/write"
> > > > > subject="/roles/user" inheritable="true"/>
> > > > >                      <permission action="/actions/read-acl" subject="owner"
> > > > > inheritable="true"/>
> > > > >                      -->
> > > > >  </objectnode>
> > > > >                  <!-- /users -->
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/users">
> > > > >  <permission action="all" subject="self" inheritable="true"/>
> > > > >  <permission action="all" subject="/roles/projector" inheritable="true"/>
> > > > >  <permission action="all" subject="unauthenticated" inheritable="true"
> > > > > negative="true"/>
> > > > >                      <!-- /users/root represents the administrator -->
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/users/root">
> > > > >  <revision>
> > > > >  <property namespace="http://jakarta.apache.org/slide/"
> > > > > name="password">root</property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >                      <!-- /users/john and /users/john2 represent
> > > > > authenticated users -->
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/users/john">
> > > > >  <revision>
> > > > >  <property namespace="http://jakarta.apache.org/slide/"
> > > > > name="password">john</property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/users/john2">
> > > > >  <revision>
> > > > >  <property namespace="http://jakarta.apache.org/slide/"
> > > > > name="password">john2</property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >                      <!-- /users/guest represents an authenticated or
> > > > > unauthenticated guest user -->
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/users/guest">
> > > > >  <revision>
> > > > >  <property namespace="http://jakarta.apache.org/slide/"
> > > > > name="password">guest</property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/users/projector">
> > > > >  <revision>
> > > > >  <property namespace="http://jakarta.apache.org/slide/"
> > > > > name="password">projector</property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  </objectnode>
> > > > >                  <!-- /roles -->
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/roles">
> > > > >  <permission action="all" subject="self" inheritable="true"/>
> > > > >  <permission action="all" subject="/roles/projector" inheritable="true"/>
> > > > >  <permission action="all" subject="unauthenticated" inheritable="true"
> > > > > negative="true"/>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/roles/root">
> > > > >  <revision>
> > > > >  <property name="group-member-set"><![CDATA[<D:href
> > > > > xmlns:D='DAV:'>/users/root</D:href>]]></property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/roles/user">
> > > > >  <revision>
> > > > >  <property name="group-member-set"><![CDATA[<D:href
> > > > > xmlns:D='DAV:'>/users/john</D:href><D:href
> > > > > xmlns:D='DAV:'>/users/john2</D:href><D:href
> > > > > xmlns:D='DAV:'>/users/root</D:href><D:href
> > > > > xmlns:D='DAV:'>/users/projector</D:href>]]></property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/roles/guest">
> > > > >  <revision>
> > > > >  <property name="group-member-set"><![CDATA[<D:href
> > > > > xmlns:D='DAV:'>/users/guest</D:href>]]></property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/roles/projector">
> > > > >  <revision>
> > > > >  <property name="group-member-set"><![CDATA[<D:href
> > > > > xmlns:D='DAV:'>/users/root</D:href><D:href
> > > > > xmlns:D='DAV:'>/users/projector</D:href>]]></property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  </objectnode>
> > > > >                  <!-- action -->
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions">
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions/read">
> > > > >  <revision>
> > > > >  <property name="privilege-member-set"><![CDATA[<D:href
> > > > > xmlns:D='DAV:'>/actions/read-acl</D:href> <D:href
> > > > > xmlns:D='DAV:'>/actions/read-current-user-privilege-set</D:href>]]></property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions/read-acl">
> > > > >  <revision>
> > > > >  <property name="privilege-member-set"/>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions/read-current-user-privilege-set">
> > > > >  <revision>
> > > > >  <property name="privilege-member-set"/>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions/write">
> > > > >  <revision>
> > > > >  <property name="privilege-member-set"><![CDATA[<D:href
> > > > > xmlns:D='DAV:'>/actions/write-acl</D:href> <D:href
> > > > > xmlns:D='DAV:'>/actions/write-properties</D:href> <D:href
> > > > > xmlns:D='DAV:'>/actions/write-content</D:href>]]></property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions/write-acl">
> > > > >  <revision>
> > > > >  <property name="privilege-member-set"/>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions/write-properties">
> > > > >  <revision>
> > > > >  <property name="privilege-member-set"/>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions/write-content">
> > > > >  <revision>
> > > > >  <property name="privilege-member-set"><![CDATA[<D:href
> > > > > xmlns:D='DAV:'>/actions/bind</D:href> <D:href
> > > > > xmlns:D='DAV:'>/actions/unbind</D:href>]]></property>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions/bind">
> > > > >  <revision>
> > > > >  <property name="privilege-member-set"/>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions/unbind">
> > > > >  <revision>
> > > > >  <property name="privilege-member-set"/>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > > uri="/actions/unlock">
> > > > >  <revision>
> > > > >  <property name="privilege-member-set"/>
> > > > >  </revision>
> > > > >  </objectnode>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/files">
> > > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > > >  <permission action="/actions/write" subject="/roles/user"
> > > > > inheritable="true"/>
> > > > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/projector">
> > > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > > >  <permission action="/actions/write" subject="/roles/projector"
> > > > > inheritable="true"/>
> > > > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/projector/work"></objectnode>
> > > > >  </objectnode>
> > > > >                  <!-- DeltaV: default history and workspace paths -->
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/history">
> > > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > > >  <permission action="/actions/write" subject="/roles/user"
> > > > > inheritable="true"/>
> > > > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/workspace">
> > > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > > >  <permission action="/actions/write" subject="/roles/user"
> > > > > inheritable="true"/>
> > > > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > > > >  </objectnode>
> > > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > > uri="/workingresource">
> > > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > > >  <permission action="/actions/write" subject="/roles/user"
> > > > > inheritable="true"/>
> > > > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > > > >  </objectnode>
> > > > >  </objectnode>
> > > > >  </data>
> > > > >  </namespace>
> > > > >      <!--
> > > > >      DeltaV global parameters
> > > > >      ========================
> > > > >      * historypath (mandatory=no, default="/history"):
> > > > >      Specifies a Slide path which determines the location where this DeltaV
> > > > >      server stores history data.
> > > > >
> > > > >      * workspacepath (mandatory=no, default="/workspace"):
> > > > >      Specifies a Slide path which determines the location where this DeltaV
> > > > >      server allows workspaces to reside.
> > > > >
> > > > >      * workingresourcepath (mandatory=no, default="/workingresource"):
> > > > >      Specifies a Slide path which determines the location where this DeltaV
> > > > >      server stores working resources.
> > > > >
> > > > >      * auto-version (mandatory=no, default="checkout-checkin"):
> > > > >      Controls the DeltaV auto-version behaviour.
> > > > >
> > > > >      * auto-version-control (mandatory=no, default="false"):
> > > > >      Indicates if a resource just created by a PUT should be set under
> > > > >      version-control.
> > > > >
> > > > >      * versioncontrol-exclude (mandatory=no, default=""):
> > > > >      Specifies a Slide path which determines resources which are excluded
> > > > > from version-control.
> > > > >      The default value "" makes no path being excluded.
> > > > >
> > > > >      * checkout-fork (mandatory=no, default="forbidden"):
> > > > >      Controls the DeltaV check-out behaviour when a version is already
> > > > >      checked-out or has a successor.
> > > > >
> > > > >      * checkin-fork (mandatory=no, default="forbidden"):
> > > > >      Controls the DeltaV check-out behaviour when a version has already a
> > > > >      successor.
> > > > >
> > > > >      * standardLivePropertiesClass (mandatory=no,
> > > > >
> > > > > default="org.apache.slide.webdav.util.resourcekind.AbstractResourceKind"):
> > > > >      Determines the "agent" knowing about what the standard live properties
> > > > > are.
> > > > >      It should be a loadable class containing the following static methods:
> > > > >      - boolean isLiveProperty(String propName)
> > > > >      - boolean isProtectedProperty(String propName)
> > > > >      - boolean isComputedProperty(String propName)
> > > > >      - Set getAllLiveProperties()
> > > > >      - Set getAllProtectedProperties()
> > > > >      - Set getAllComputedProperties()
> > > > >
> > > > >      * uriRedirectorClass (mandatory=no,
> > > > >      default="org.apache.slide.webdav.util.DeltavUriRedirector"):
> > > > >      Determines the URI redirector class. The DeltaV URI redirector is in
> > > > >      charge of the following redirections:
> > > > >      - version URI to history URI, e.g. /history/2/1.4 to /history/2
> > > > >      - latest revision number for history resource to 0.0
> > > > >      - latest revision number for version resource to last URI token,
> > > > >      e.g. /history/2/1.4 to 1.4
> > > > >      It should be a loadable class containing the following static methods:
> > > > >      - String redirectUri(String uri)
> > > > >      - NodeRevisionNumber redirectLatestRevisionNumber(String uri)
> > > > >      -->
> > > > >  <parameter name="historypath">/history</parameter>
> > > > >  <parameter name="workspacepath">/workspace</parameter>
> > > > >  <parameter name="workingresourcepath">/workingresource</parameter>
> > > > >  <parameter name="auto-version">checkout-checkin</parameter>
> > > > >  <parameter name="auto-version-control">false</parameter>
> > > > >  <parameter name="versioncontrol-exclude"/>
> > > > >  <parameter name="checkout-fork">forbidden</parameter>
> > > > >  <parameter name="checkin-fork">forbidden</parameter>
> > > > >
> > > > >
> > > > >      <!-- Extractor configuration -->
> > > > >  <extractors>
> > > > >  <extractor classname="org.apache.slide.extractor.SimpleXmlExtractor"
> > > > > uri="/files/articles/test.xml">
> > > > >  <configuration>
> > > > >  <instruction property="title" xpath="/article/title/text()" />
> > > > >  <instruction property="summary" xpath="/article/summary/text()" />
> > > > >  </configuration>
> > > > >  </extractor>
> > > > >  <extractor classname="org.apache.slide.extractor.OfficeExtractor"
> > > > > uri="/files/docs/">
> > > > >  <configuration>
> > > > >  <instruction property="author" id="SummaryInformation-0-4" />
> > > > >  <instruction property="application" id="SummaryInformation-0-18" />
> > > > >  </configuration>
> > > > >  </extractor>
> > > > >  </extractors>
> > > > >
> > > > >      <!-- Event configuration -->
> > > > >  <events>
> > > > >  <event classname="org.apache.slide.webdav.event.WebdavEvent" enable="true"
> > > > > />
> > > > >  <event classname="org.apache.slide.event.ContentEvent" enable="true" />
> > > > >  <event classname="org.apache.slide.event.ContentEvent" method="retrieve"
> > > > > enable="false" />
> > > > >  <event classname="org.apache.slide.event.EventCollection" enable="true" />
> > > > >  <event classname="org.apache.slide.event.TransactionEvent" enable="true" />
> > > > >
> > > > >  <event classname="org.apache.slide.event.MacroEvent" enable="true"/>
> > > > >
> > > > >          <!--listener classname="org.apache.slide.util.event.EventLogger"
> > > > > /-->
> > > > >  <listener classname="org.apache.slide.event.VetoableEventCollector" />
> > > > >  <listener classname="org.apache.slide.event.TransientEventCollector" />
> > > > >  <listener classname="org.apache.slide.webdav.event.NotificationTrigger">
> > > > >  <configuration>
> > > > >  <notification include-events="false" />
> > > > >  <persist-subscriptions filename="subscriptions.xml" />
> > > > >  </configuration>
> > > > >  </listener>
> > > > >  <listener classname="org.apache.slide.extractor.PropertyExtractorTrigger"
> > > > > />
> > > > >  <listener classname="org.apache.slide.search.IndexTrigger">
> > > > >  <configuration>
> > > > >  <indexer classname="org.apache.slide.search.LoggingIndexer"
> > > > > synchronous="false" uri="/files/articles" />
> > > > >  </configuration>
> > > > >  </listener>
> > > > >
> > > > >  <!-- Uncomment for cluster support. Be sure to local-host and
> > > > > repository-host -->
> > > > >  <!--
> > > > >  <listener classname="org.apache.slide.cluster.ClusterCacheRefresher">
> > > > >  <configuration>
> > > > >  <node local-host="local.host.domain"
> > > > >        local-port="4444"
> > > > >    repository-host="remote.host.domain"
> > > > >    repository-port="8080"
> > > > >    repository-protocol="http"
> > > > >    username="root"
> > > > >    password="root"
> > > > >    base-uri="/files/"
> > > > >  />
> > > > >  </configuration>
> > > > >  </listener>
> > > > >  -->
> > > > >
> > > > >  <listener classname="org.apache.slide.macro.MacroPropertyUpdater">
> > > > >            <!-- Listener that updates some properties if resources are
> > > > >                 copied or moved.  This requires MacroEvents enabled (at
> > > > >                 least methods copy and move) -->
> > > > >  <configuration>
> > > > >  <update-displayname>true</update-displayname>
> > > > >  <update-owner-on-move>false</update-owner-on-move>
> > > > >  <update-owner-on-copy>true</update-owner-on-copy>
> > > > >  </configuration>
> > > > >  </listener>
> > > > >  </events>
> > > > >  </slide>
> > > > >
> > > > >  Stack Trace:
> > > > >  ==========
> > > > >
> > > > >  19 Nov 2004 15:55:05 - org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter
> > > > > - ERROR - SQL error 1205 on /db/load_test/user_3: Deadlock found when trying
> > > > > to get lock; Try restarting transaction,  message from server: "Lock wait
> > > > > timeout exceeded; Try restarting transaction"
> > > > >  java.sql.SQLException: Deadlock found when trying to get lock; Try
> > > > > restarting transaction,  message from server: "Lock wait timeout exceeded;
> > > > > Try restarting transaction"
> > > > >          at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
> > > > >          at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
> > > > >          at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
> > > > >          at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
> > > > >          at
> > > > > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
> > > > >          at
> > > > > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
> > > > >          at
> > > > > org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
> > > > >          at
> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:1345)
> > > > >          at
> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
> > > > >          at
> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
> > > > >          at
> > > > > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
> > > > >          at
> > > > > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
> > > > >          at
> > > > > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
> > > > >          at
> > > > > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
> > > > >          at
> > > > > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
> > > > >          at
> > > > > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
> > > > >          at
> > > > > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
> > > > >          at
> > > > > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
> > > > >          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:462)
> > > > >          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:117)
> > > > >          at
> > > > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> > > > >          at
> > > > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> > > > >          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.processConnection(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)
> > > > >  org.apache.slide.common.ServiceAccessException: Service
> > > > > org.apache.slide.store.impl.rdbms.JDBCStore@2bfdff access error : Deadlock
> > > > > found when trying to get lock; Try restarting transaction,  message from
> > > > > server: "Lock wait timeout exceeded; Try restarting transaction"
> > > > >          at
> > > > > org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
> > > > >          at
> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
> > > > >          at
> > > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
> > > > >          at
> > > > > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
> > > > >          at
> > > > > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
> > > > >          at
> > > > > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
> > > > >          at
> > > > > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
> > > > >          at
> > > > > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
> > > > >          at
> > > > > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
> > > > >          at
> > > > > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
> > > > >          at
> > > > > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
> > > > >          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:462)
> > > > >          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:117)
> > > > >          at
> > > > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> > > > >          at
> > > > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> > > > >          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.processConnection(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)
> > > > >  http-8080-Processor11, 19-Nov-2004 15:52:31, unauthenticated, PUT, 500
> > > > > "Internal Server Error", 153875 ms, /db/load_test/user_3/dummy_1100908351664
> > > > >
> > > > >
> > > > >
> > > > >  -Mirko
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >  On Fri, 2004-11-19 at 16:17, Oliver Zeigermann wrote:
> > > > >  Make sure you have <parameter name="sequential-mode">full</parameter>
> > > > > <parameter name="all-methods-in-transactions">true</parameter> in the
> > > > > configuration sections of Domain.xml which is default for Slide 2.1b2. I
> > > > > have run concurrent tests with 20 threads all writing to the same collection
> > > > > resp. to different ones. One problems.... Oliver On Sat, 20 Nov 2004
> > > > > 01:05:54 +0100, Oliver Zeigermann <ol...@gmail.com> wrote: >
> > > > > Please send your Domain.xml and the stack traces of said exceptions. > You
> > > > > said your were using 2.1b2? > > Oliver
> > > > >
> > > >
> > >
> >
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
... and if you provided a test case that revealed any more deadlock I
promise that I will try to help you further.

Oliver


On Sat, 20 Nov 2004 14:40:47 +0100, Oliver Zeigermann
<ol...@gmail.com> wrote:
> And finally took the time to check it with MySQL 4.1 with the attached
> Domain.xml which differs from yours in details only and:
> 
> no deadlocks, no conflicts, no problems.
> 
> Could you describe how your test scenario looks like? Is your attached
> Domain.xml really the one you used for testing?
> 
> Oliver
> 
> On Sat, 20 Nov 2004 13:27:36 +0100, Oliver Zeigermann
> 
> 
> <ol...@gmail.com> wrote:
> > I just tried this
> >
> > TProcessor.CMD -pattern *cases\\functional\\extra\\multi-user* -users
> > 20 -iterations 10
> >
> > which is 20 threads repeating uploads, deletes for 10 times and
> > meanwhile browsed Slide with the Windows explorer and it worked
> > without deadlocks.
> >
> > Caching was turned off as well.
> >
> > However, my store is the tx file one and I can not exclude there are
> > still programming errors in the MySQL store as I have never used it.
> > Lately problems were reported with other db stores when not using
> > compression mode. Could you try it again with compression turned on
> > and see if this changes anything.
> >
> > Oliver
> >
> > On Sat, 20 Nov 2004 09:31:17 +0100, Oliver Zeigermann
> >
> >
> > <ol...@gmail.com> wrote:
> > > OK, thanks for providing that info. I will have a look at it ASAP.
> > > Which MySQL version are you using?
> > >
> > > Oliver
> > >
> > >
> > > On Fri, 19 Nov 2004 17:44:11 -0800, Mirko Froehlich
> > >
> > >
> > > <mf...@digitalchocolate.com> wrote:
> > > >  Yes, I'm using 2.1b2. I have copied my domain.xml below. It does have the
> > > > two parameters you mentioned. One thing I should mention is that I disabled
> > > > caching, because I really wanted to simulate the effect of iterating over
> > > > new content without the effects of caching. My domain.xml defines both a
> > > > text and a JDBC store, but the JDBC store is the one I'm using for this
> > > > test. I have also included one of the stack traces below.
> > > >
> > > >
> > > >  Domain.xml:
> > > >  =========
> > > >
> > > >  <?xml version="1.0"?>
> > > >  <slide>
> > > >  <namespace name="slide">
> > > >  <definition>
> > > >  <store name="tx">
> > > >  <!-- cache settings (added by mirko) -->
> > > >  <parameter name="cache-mode">off</parameter>
> > > >  <parameter name="enable-content-caching">false</parameter>
> > > >  <parameter name="content-cache-size">1000</parameter>
> > > >  <parameter name="object-cache-size">1000</parameter>
> > > >
> > > >  <parameter name="tlock-timeout">120</parameter>
> > > >  <nodestore
> > > > classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
> > > >  <parameter
> > > > name="rootpath">/usr/local/jakarta-slide/repository/store/metadata</parameter>
> > > >  <parameter
> > > > name="workpath">/usr/local/jakarta-slide/repository/work/metadata</parameter>
> > > >  <parameter name="defer-saving">true</parameter>
> > > >  <parameter name="timeout">120</parameter>
> > > >  </nodestore>
> > > >  <sequencestore classname="org.apache.slide.store.txfile.FileSequenceStore">
> > > >  <parameter
> > > > name="rootpath">/usr/local/jakarta-slide/repository/store/sequence</parameter>
> > > >  </sequencestore>
> > > >  <securitystore>
> > > >  <reference store="nodestore"/>
> > > >  </securitystore>
> > > >  <lockstore>
> > > >  <reference store="nodestore"/>
> > > >  </lockstore>
> > > >  <revisiondescriptorsstore>
> > > >  <reference store="nodestore"/>
> > > >  </revisiondescriptorsstore>
> > > >  <revisiondescriptorstore>
> > > >  <reference store="nodestore"/>
> > > >  </revisiondescriptorstore>
> > > >  <contentstore classname="org.apache.slide.store.txfile.TxFileContentStore">
> > > >  <parameter
> > > > name="rootpath">/usr/local/jakarta-slide/repository/store/content</parameter>
> > > >  <parameter
> > > > name="workpath">/usr/local/jakarta-slide/repository/work/content</parameter>
> > > >  <parameter name="defer-saving">true</parameter>
> > > >  <parameter name="timeout">120</parameter>
> > > >  </contentstore>
> > > >                  <!-- uncomment if you want to use the sample Indexer -->
> > > >                  <!-- be sure to have Lucene in your classpath
> > > > -->
> > > >                  <!--
> > > >                  <contentindexer
> > > > classname="org.apache.slide.index.SampleTxtContainsIndexer">
> > > >                  <parameter name="indexpath">./index</parameter>
> > > >                  </contentindexer>
> > > >          -->
> > > >  </store>
> > > >  <store name="db">
> > > >  <!-- cache settings (added by mirko) -->
> > > >  <parameter name="cache-mode">off</parameter>
> > > >  <parameter name="enable-content-caching">false</parameter>
> > > >  <parameter name="content-cache-size">1000</parameter>
> > > >  <parameter name="object-cache-size">1000</parameter>
> > > >
> > > >  <nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
> > > >  <parameter
> > > > name="adapter">org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter</parameter>
> > > >  <parameter name="driver">com.mysql.jdbc.Driver</parameter>
> > > >  <parameter name="url">jdbc:mysql://localhost/slide</parameter>
> > > >  <parameter name="user">slide</parameter>
> > > >  <parameter name="password">slide</parameter>
> > > >  <parameter name="dbcpPooling">true</parameter>
> > > >  <parameter name="maxPooledConnections">30</parameter>
> > > >  <parameter name="isolation">SERIALIZABLE</parameter>
> > > >  <parameter name="compress">false</parameter>
> > > >  </nodestore>
> > > >  <contentstore>
> > > >  <reference store="nodestore" />
> > > >  </contentstore>
> > > >  <securitystore>
> > > >  <reference store="nodestore" />
> > > >  </securitystore>
> > > >  <lockstore>
> > > >  <reference store="nodestore" />
> > > >  </lockstore>
> > > >  <revisiondescriptorsstore>
> > > >  <reference store="nodestore" />
> > > >  </revisiondescriptorsstore>
> > > >  <revisiondescriptorstore>
> > > >  <reference store="nodestore" />
> > > >  </revisiondescriptorstore>
> > > >  </store>
> > > >  <scope match="/" store="tx"/>
> > > >  <scope match="/db" store="db"/>
> > > >  </definition>
> > > >  <configuration>
> > > >              <!-- Actions mapping -->
> > > >  <read-object>/actions/read</read-object>
> > > >  <create-object>/actions/write</create-object>
> > > >  <remove-object>/actions/write</remove-object>
> > > >  <grant-permission>/actions/write-acl</grant-permission>
> > > >  <revoke-permission>/actions/write-acl</revoke-permission>
> > > >  <read-permissions>/actions/read-acl</read-permissions>
> > > > <read-own-permissions>/actions/read-current-user-privilege-set</read-own-permissions>
> > > >  <lock-object>/actions/write</lock-object>
> > > >  <kill-lock>/actions/unlock</kill-lock>
> > > >  <read-locks>/actions/read</read-locks>
> > > >  <read-revision-metadata>/actions/read</read-revision-metadata>
> > > > <create-revision-metadata>/actions/write-properties</create-revision-metadata>
> > > > <modify-revision-metadata>/actions/write-properties</modify-revision-metadata>
> > > > <remove-revision-metadata>/actions/write-properties</remove-revision-metadata>
> > > >  <read-revision-content>/actions/read</read-revision-content>
> > > >  <create-revision-content>/actions/write-content</create-revision-content>
> > > >  <modify-revision-content>/actions/write-content</modify-revision-content>
> > > >  <remove-revision-content>/actions/write-content</remove-revision-content>
> > > >  <bind-member>/actions/bind</bind-member>
> > > >  <unbind-member>/actions/unbind</unbind-member>
> > > >              <!-- Paths configuration -->
> > > >  <userspath>/users</userspath>
> > > >  <rolespath>/roles</rolespath>
> > > >  <actionspath>/actions</actionspath>
> > > >  <filespath>/files</filespath>
> > > >  <parameter name="dav">true</parameter>
> > > >  <parameter name="standalone">true</parameter>
> > > >  <parameter name="acl_inheritance_type">path</parameter>
> > > >              <!-- Nested roles: 0 means no nesting (default), 1 means one
> > > > sublevel, etc. -->
> > > >  <parameter name="nested_roles_maxdepth">0</parameter>
> > > >              <!-- Can be "off", "write" and "full" -->
> > > >  <parameter name="sequential-mode">full</parameter>
> > > >              <!-- "false" lets all read-only methods be executed outside of
> > > > transactions -->
> > > >  <parameter name="all-methods-in-transactions">true</parameter>
> > > >              <!-- Setting this to true will force Slide to internally
> > > > convert the username a user
> > > >                   enters at login to lowercase. This is useful for users who
> > > > can't be bothered
> > > >                   with turning off their capslock key before logging in. -->
> > > >  <parameter name="force-lowercase-login">false</parameter>
> > > >  </configuration>
> > > >  <data>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/">
> > > >                  <!-- Subject can be:
> > > >                  any user             "all"
> > > >                  authenticated user   "authenticated"
> > > >                  unauthenticated user "unauthenticated"
> > > >                  self                 "self"
> > > >                  owner of resource    "owner"
> > > >                  a user               "/users/john"
> > > >                  a role               "/roles/admin"
> > > >                  -->
> > > >  <permission action="all" subject="/roles/root" inheritable="true"/>
> > > >  <permission action="/actions/read-acl" subject="all" inheritable="true"
> > > > negative="true"/>
> > > >  <permission action="/actions/write-acl" subject="all" inheritable="true"
> > > > negative="true"/>
> > > >  <permission action="/actions/unlock" subject="all" inheritable="true"
> > > > negative="true"/>
> > > >  <permission action="/actions/read" subject="all" inheritable="true"/>
> > > >  <!-- db store -->
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/db">
> > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > >                      <!--
> > > >                      <permission action="/actions/write"
> > > > subject="/roles/user" inheritable="true"/>
> > > >                      <permission action="/actions/read-acl" subject="owner"
> > > > inheritable="true"/>
> > > >                      -->
> > > >  </objectnode>
> > > >                  <!-- /users -->
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/users">
> > > >  <permission action="all" subject="self" inheritable="true"/>
> > > >  <permission action="all" subject="/roles/projector" inheritable="true"/>
> > > >  <permission action="all" subject="unauthenticated" inheritable="true"
> > > > negative="true"/>
> > > >                      <!-- /users/root represents the administrator -->
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/users/root">
> > > >  <revision>
> > > >  <property namespace="http://jakarta.apache.org/slide/"
> > > > name="password">root</property>
> > > >  </revision>
> > > >  </objectnode>
> > > >                      <!-- /users/john and /users/john2 represent
> > > > authenticated users -->
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/users/john">
> > > >  <revision>
> > > >  <property namespace="http://jakarta.apache.org/slide/"
> > > > name="password">john</property>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/users/john2">
> > > >  <revision>
> > > >  <property namespace="http://jakarta.apache.org/slide/"
> > > > name="password">john2</property>
> > > >  </revision>
> > > >  </objectnode>
> > > >                      <!-- /users/guest represents an authenticated or
> > > > unauthenticated guest user -->
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/users/guest">
> > > >  <revision>
> > > >  <property namespace="http://jakarta.apache.org/slide/"
> > > > name="password">guest</property>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/users/projector">
> > > >  <revision>
> > > >  <property namespace="http://jakarta.apache.org/slide/"
> > > > name="password">projector</property>
> > > >  </revision>
> > > >  </objectnode>
> > > >  </objectnode>
> > > >                  <!-- /roles -->
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/roles">
> > > >  <permission action="all" subject="self" inheritable="true"/>
> > > >  <permission action="all" subject="/roles/projector" inheritable="true"/>
> > > >  <permission action="all" subject="unauthenticated" inheritable="true"
> > > > negative="true"/>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/roles/root">
> > > >  <revision>
> > > >  <property name="group-member-set"><![CDATA[<D:href
> > > > xmlns:D='DAV:'>/users/root</D:href>]]></property>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/roles/user">
> > > >  <revision>
> > > >  <property name="group-member-set"><![CDATA[<D:href
> > > > xmlns:D='DAV:'>/users/john</D:href><D:href
> > > > xmlns:D='DAV:'>/users/john2</D:href><D:href
> > > > xmlns:D='DAV:'>/users/root</D:href><D:href
> > > > xmlns:D='DAV:'>/users/projector</D:href>]]></property>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/roles/guest">
> > > >  <revision>
> > > >  <property name="group-member-set"><![CDATA[<D:href
> > > > xmlns:D='DAV:'>/users/guest</D:href>]]></property>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/roles/projector">
> > > >  <revision>
> > > >  <property name="group-member-set"><![CDATA[<D:href
> > > > xmlns:D='DAV:'>/users/root</D:href><D:href
> > > > xmlns:D='DAV:'>/users/projector</D:href>]]></property>
> > > >  </revision>
> > > >  </objectnode>
> > > >  </objectnode>
> > > >                  <!-- action -->
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions">
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions/read">
> > > >  <revision>
> > > >  <property name="privilege-member-set"><![CDATA[<D:href
> > > > xmlns:D='DAV:'>/actions/read-acl</D:href> <D:href
> > > > xmlns:D='DAV:'>/actions/read-current-user-privilege-set</D:href>]]></property>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions/read-acl">
> > > >  <revision>
> > > >  <property name="privilege-member-set"/>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions/read-current-user-privilege-set">
> > > >  <revision>
> > > >  <property name="privilege-member-set"/>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions/write">
> > > >  <revision>
> > > >  <property name="privilege-member-set"><![CDATA[<D:href
> > > > xmlns:D='DAV:'>/actions/write-acl</D:href> <D:href
> > > > xmlns:D='DAV:'>/actions/write-properties</D:href> <D:href
> > > > xmlns:D='DAV:'>/actions/write-content</D:href>]]></property>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions/write-acl">
> > > >  <revision>
> > > >  <property name="privilege-member-set"/>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions/write-properties">
> > > >  <revision>
> > > >  <property name="privilege-member-set"/>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions/write-content">
> > > >  <revision>
> > > >  <property name="privilege-member-set"><![CDATA[<D:href
> > > > xmlns:D='DAV:'>/actions/bind</D:href> <D:href
> > > > xmlns:D='DAV:'>/actions/unbind</D:href>]]></property>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions/bind">
> > > >  <revision>
> > > >  <property name="privilege-member-set"/>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions/unbind">
> > > >  <revision>
> > > >  <property name="privilege-member-set"/>
> > > >  </revision>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > > uri="/actions/unlock">
> > > >  <revision>
> > > >  <property name="privilege-member-set"/>
> > > >  </revision>
> > > >  </objectnode>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/files">
> > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > >  <permission action="/actions/write" subject="/roles/user"
> > > > inheritable="true"/>
> > > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/projector">
> > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > >  <permission action="/actions/write" subject="/roles/projector"
> > > > inheritable="true"/>
> > > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/projector/work"></objectnode>
> > > >  </objectnode>
> > > >                  <!-- DeltaV: default history and workspace paths -->
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/history">
> > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > >  <permission action="/actions/write" subject="/roles/user"
> > > > inheritable="true"/>
> > > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/workspace">
> > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > >  <permission action="/actions/write" subject="/roles/user"
> > > > inheritable="true"/>
> > > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > > >  </objectnode>
> > > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > > uri="/workingresource">
> > > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > > >  <permission action="/actions/write" subject="/roles/user"
> > > > inheritable="true"/>
> > > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > > >  </objectnode>
> > > >  </objectnode>
> > > >  </data>
> > > >  </namespace>
> > > >      <!--
> > > >      DeltaV global parameters
> > > >      ========================
> > > >      * historypath (mandatory=no, default="/history"):
> > > >      Specifies a Slide path which determines the location where this DeltaV
> > > >      server stores history data.
> > > >
> > > >      * workspacepath (mandatory=no, default="/workspace"):
> > > >      Specifies a Slide path which determines the location where this DeltaV
> > > >      server allows workspaces to reside.
> > > >
> > > >      * workingresourcepath (mandatory=no, default="/workingresource"):
> > > >      Specifies a Slide path which determines the location where this DeltaV
> > > >      server stores working resources.
> > > >
> > > >      * auto-version (mandatory=no, default="checkout-checkin"):
> > > >      Controls the DeltaV auto-version behaviour.
> > > >
> > > >      * auto-version-control (mandatory=no, default="false"):
> > > >      Indicates if a resource just created by a PUT should be set under
> > > >      version-control.
> > > >
> > > >      * versioncontrol-exclude (mandatory=no, default=""):
> > > >      Specifies a Slide path which determines resources which are excluded
> > > > from version-control.
> > > >      The default value "" makes no path being excluded.
> > > >
> > > >      * checkout-fork (mandatory=no, default="forbidden"):
> > > >      Controls the DeltaV check-out behaviour when a version is already
> > > >      checked-out or has a successor.
> > > >
> > > >      * checkin-fork (mandatory=no, default="forbidden"):
> > > >      Controls the DeltaV check-out behaviour when a version has already a
> > > >      successor.
> > > >
> > > >      * standardLivePropertiesClass (mandatory=no,
> > > >
> > > > default="org.apache.slide.webdav.util.resourcekind.AbstractResourceKind"):
> > > >      Determines the "agent" knowing about what the standard live properties
> > > > are.
> > > >      It should be a loadable class containing the following static methods:
> > > >      - boolean isLiveProperty(String propName)
> > > >      - boolean isProtectedProperty(String propName)
> > > >      - boolean isComputedProperty(String propName)
> > > >      - Set getAllLiveProperties()
> > > >      - Set getAllProtectedProperties()
> > > >      - Set getAllComputedProperties()
> > > >
> > > >      * uriRedirectorClass (mandatory=no,
> > > >      default="org.apache.slide.webdav.util.DeltavUriRedirector"):
> > > >      Determines the URI redirector class. The DeltaV URI redirector is in
> > > >      charge of the following redirections:
> > > >      - version URI to history URI, e.g. /history/2/1.4 to /history/2
> > > >      - latest revision number for history resource to 0.0
> > > >      - latest revision number for version resource to last URI token,
> > > >      e.g. /history/2/1.4 to 1.4
> > > >      It should be a loadable class containing the following static methods:
> > > >      - String redirectUri(String uri)
> > > >      - NodeRevisionNumber redirectLatestRevisionNumber(String uri)
> > > >      -->
> > > >  <parameter name="historypath">/history</parameter>
> > > >  <parameter name="workspacepath">/workspace</parameter>
> > > >  <parameter name="workingresourcepath">/workingresource</parameter>
> > > >  <parameter name="auto-version">checkout-checkin</parameter>
> > > >  <parameter name="auto-version-control">false</parameter>
> > > >  <parameter name="versioncontrol-exclude"/>
> > > >  <parameter name="checkout-fork">forbidden</parameter>
> > > >  <parameter name="checkin-fork">forbidden</parameter>
> > > >
> > > >
> > > >      <!-- Extractor configuration -->
> > > >  <extractors>
> > > >  <extractor classname="org.apache.slide.extractor.SimpleXmlExtractor"
> > > > uri="/files/articles/test.xml">
> > > >  <configuration>
> > > >  <instruction property="title" xpath="/article/title/text()" />
> > > >  <instruction property="summary" xpath="/article/summary/text()" />
> > > >  </configuration>
> > > >  </extractor>
> > > >  <extractor classname="org.apache.slide.extractor.OfficeExtractor"
> > > > uri="/files/docs/">
> > > >  <configuration>
> > > >  <instruction property="author" id="SummaryInformation-0-4" />
> > > >  <instruction property="application" id="SummaryInformation-0-18" />
> > > >  </configuration>
> > > >  </extractor>
> > > >  </extractors>
> > > >
> > > >      <!-- Event configuration -->
> > > >  <events>
> > > >  <event classname="org.apache.slide.webdav.event.WebdavEvent" enable="true"
> > > > />
> > > >  <event classname="org.apache.slide.event.ContentEvent" enable="true" />
> > > >  <event classname="org.apache.slide.event.ContentEvent" method="retrieve"
> > > > enable="false" />
> > > >  <event classname="org.apache.slide.event.EventCollection" enable="true" />
> > > >  <event classname="org.apache.slide.event.TransactionEvent" enable="true" />
> > > >
> > > >  <event classname="org.apache.slide.event.MacroEvent" enable="true"/>
> > > >
> > > >          <!--listener classname="org.apache.slide.util.event.EventLogger"
> > > > /-->
> > > >  <listener classname="org.apache.slide.event.VetoableEventCollector" />
> > > >  <listener classname="org.apache.slide.event.TransientEventCollector" />
> > > >  <listener classname="org.apache.slide.webdav.event.NotificationTrigger">
> > > >  <configuration>
> > > >  <notification include-events="false" />
> > > >  <persist-subscriptions filename="subscriptions.xml" />
> > > >  </configuration>
> > > >  </listener>
> > > >  <listener classname="org.apache.slide.extractor.PropertyExtractorTrigger"
> > > > />
> > > >  <listener classname="org.apache.slide.search.IndexTrigger">
> > > >  <configuration>
> > > >  <indexer classname="org.apache.slide.search.LoggingIndexer"
> > > > synchronous="false" uri="/files/articles" />
> > > >  </configuration>
> > > >  </listener>
> > > >
> > > >  <!-- Uncomment for cluster support. Be sure to local-host and
> > > > repository-host -->
> > > >  <!--
> > > >  <listener classname="org.apache.slide.cluster.ClusterCacheRefresher">
> > > >  <configuration>
> > > >  <node local-host="local.host.domain"
> > > >        local-port="4444"
> > > >    repository-host="remote.host.domain"
> > > >    repository-port="8080"
> > > >    repository-protocol="http"
> > > >    username="root"
> > > >    password="root"
> > > >    base-uri="/files/"
> > > >  />
> > > >  </configuration>
> > > >  </listener>
> > > >  -->
> > > >
> > > >  <listener classname="org.apache.slide.macro.MacroPropertyUpdater">
> > > >            <!-- Listener that updates some properties if resources are
> > > >                 copied or moved.  This requires MacroEvents enabled (at
> > > >                 least methods copy and move) -->
> > > >  <configuration>
> > > >  <update-displayname>true</update-displayname>
> > > >  <update-owner-on-move>false</update-owner-on-move>
> > > >  <update-owner-on-copy>true</update-owner-on-copy>
> > > >  </configuration>
> > > >  </listener>
> > > >  </events>
> > > >  </slide>
> > > >
> > > >  Stack Trace:
> > > >  ==========
> > > >
> > > >  19 Nov 2004 15:55:05 - org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter
> > > > - ERROR - SQL error 1205 on /db/load_test/user_3: Deadlock found when trying
> > > > to get lock; Try restarting transaction,  message from server: "Lock wait
> > > > timeout exceeded; Try restarting transaction"
> > > >  java.sql.SQLException: Deadlock found when trying to get lock; Try
> > > > restarting transaction,  message from server: "Lock wait timeout exceeded;
> > > > Try restarting transaction"
> > > >          at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
> > > >          at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
> > > >          at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
> > > >          at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
> > > >          at
> > > > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
> > > >          at
> > > > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
> > > >          at
> > > > org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
> > > >          at
> > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:1345)
> > > >          at
> > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
> > > >          at
> > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
> > > >          at
> > > > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
> > > >          at
> > > > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
> > > >          at
> > > > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
> > > >          at
> > > > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
> > > >          at
> > > > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
> > > >          at
> > > > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
> > > >          at
> > > > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
> > > >          at
> > > > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
> > > >          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:462)
> > > >          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:117)
> > > >          at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> > > >          at
> > > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> > > >          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.processConnection(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)
> > > >  org.apache.slide.common.ServiceAccessException: Service
> > > > org.apache.slide.store.impl.rdbms.JDBCStore@2bfdff access error : Deadlock
> > > > found when trying to get lock; Try restarting transaction,  message from
> > > > server: "Lock wait timeout exceeded; Try restarting transaction"
> > > >          at
> > > > org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
> > > >          at
> > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
> > > >          at
> > > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
> > > >          at
> > > > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
> > > >          at
> > > > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
> > > >          at
> > > > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
> > > >          at
> > > > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
> > > >          at
> > > > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
> > > >          at
> > > > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
> > > >          at
> > > > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
> > > >          at
> > > > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
> > > >          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:462)
> > > >          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:117)
> > > >          at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> > > >          at
> > > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> > > >          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.processConnection(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)
> > > >  http-8080-Processor11, 19-Nov-2004 15:52:31, unauthenticated, PUT, 500
> > > > "Internal Server Error", 153875 ms, /db/load_test/user_3/dummy_1100908351664
> > > >
> > > >
> > > >
> > > >  -Mirko
> > > >
> > > >
> > > >
> > > >
> > > >  On Fri, 2004-11-19 at 16:17, Oliver Zeigermann wrote:
> > > >  Make sure you have <parameter name="sequential-mode">full</parameter>
> > > > <parameter name="all-methods-in-transactions">true</parameter> in the
> > > > configuration sections of Domain.xml which is default for Slide 2.1b2. I
> > > > have run concurrent tests with 20 threads all writing to the same collection
> > > > resp. to different ones. One problems.... Oliver On Sat, 20 Nov 2004
> > > > 01:05:54 +0100, Oliver Zeigermann <ol...@gmail.com> wrote: >
> > > > Please send your Domain.xml and the stack traces of said exceptions. > You
> > > > said your were using 2.1b2? > > Oliver
> > > >
> > >
> >
> 
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
And finally took the time to check it with MySQL 4.1 with the attached
Domain.xml which differs from yours in details only and:

no deadlocks, no conflicts, no problems.

Could you describe how your test scenario looks like? Is your attached
Domain.xml really the one you used for testing?

Oliver

On Sat, 20 Nov 2004 13:27:36 +0100, Oliver Zeigermann
<ol...@gmail.com> wrote:
> I just tried this
> 
> TProcessor.CMD -pattern *cases\\functional\\extra\\multi-user* -users
> 20 -iterations 10
> 
> which is 20 threads repeating uploads, deletes for 10 times and
> meanwhile browsed Slide with the Windows explorer and it worked
> without deadlocks.
> 
> Caching was turned off as well.
> 
> However, my store is the tx file one and I can not exclude there are
> still programming errors in the MySQL store as I have never used it.
> Lately problems were reported with other db stores when not using
> compression mode. Could you try it again with compression turned on
> and see if this changes anything.
> 
> Oliver
> 
> On Sat, 20 Nov 2004 09:31:17 +0100, Oliver Zeigermann
> 
> 
> <ol...@gmail.com> wrote:
> > OK, thanks for providing that info. I will have a look at it ASAP.
> > Which MySQL version are you using?
> >
> > Oliver
> >
> >
> > On Fri, 19 Nov 2004 17:44:11 -0800, Mirko Froehlich
> >
> >
> > <mf...@digitalchocolate.com> wrote:
> > >  Yes, I'm using 2.1b2. I have copied my domain.xml below. It does have the
> > > two parameters you mentioned. One thing I should mention is that I disabled
> > > caching, because I really wanted to simulate the effect of iterating over
> > > new content without the effects of caching. My domain.xml defines both a
> > > text and a JDBC store, but the JDBC store is the one I'm using for this
> > > test. I have also included one of the stack traces below.
> > >
> > >
> > >  Domain.xml:
> > >  =========
> > >
> > >  <?xml version="1.0"?>
> > >  <slide>
> > >  <namespace name="slide">
> > >  <definition>
> > >  <store name="tx">
> > >  <!-- cache settings (added by mirko) -->
> > >  <parameter name="cache-mode">off</parameter>
> > >  <parameter name="enable-content-caching">false</parameter>
> > >  <parameter name="content-cache-size">1000</parameter>
> > >  <parameter name="object-cache-size">1000</parameter>
> > >
> > >  <parameter name="tlock-timeout">120</parameter>
> > >  <nodestore
> > > classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
> > >  <parameter
> > > name="rootpath">/usr/local/jakarta-slide/repository/store/metadata</parameter>
> > >  <parameter
> > > name="workpath">/usr/local/jakarta-slide/repository/work/metadata</parameter>
> > >  <parameter name="defer-saving">true</parameter>
> > >  <parameter name="timeout">120</parameter>
> > >  </nodestore>
> > >  <sequencestore classname="org.apache.slide.store.txfile.FileSequenceStore">
> > >  <parameter
> > > name="rootpath">/usr/local/jakarta-slide/repository/store/sequence</parameter>
> > >  </sequencestore>
> > >  <securitystore>
> > >  <reference store="nodestore"/>
> > >  </securitystore>
> > >  <lockstore>
> > >  <reference store="nodestore"/>
> > >  </lockstore>
> > >  <revisiondescriptorsstore>
> > >  <reference store="nodestore"/>
> > >  </revisiondescriptorsstore>
> > >  <revisiondescriptorstore>
> > >  <reference store="nodestore"/>
> > >  </revisiondescriptorstore>
> > >  <contentstore classname="org.apache.slide.store.txfile.TxFileContentStore">
> > >  <parameter
> > > name="rootpath">/usr/local/jakarta-slide/repository/store/content</parameter>
> > >  <parameter
> > > name="workpath">/usr/local/jakarta-slide/repository/work/content</parameter>
> > >  <parameter name="defer-saving">true</parameter>
> > >  <parameter name="timeout">120</parameter>
> > >  </contentstore>
> > >                  <!-- uncomment if you want to use the sample Indexer -->
> > >                  <!-- be sure to have Lucene in your classpath
> > > -->
> > >                  <!--
> > >                  <contentindexer
> > > classname="org.apache.slide.index.SampleTxtContainsIndexer">
> > >                  <parameter name="indexpath">./index</parameter>
> > >                  </contentindexer>
> > >          -->
> > >  </store>
> > >  <store name="db">
> > >  <!-- cache settings (added by mirko) -->
> > >  <parameter name="cache-mode">off</parameter>
> > >  <parameter name="enable-content-caching">false</parameter>
> > >  <parameter name="content-cache-size">1000</parameter>
> > >  <parameter name="object-cache-size">1000</parameter>
> > >
> > >  <nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
> > >  <parameter
> > > name="adapter">org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter</parameter>
> > >  <parameter name="driver">com.mysql.jdbc.Driver</parameter>
> > >  <parameter name="url">jdbc:mysql://localhost/slide</parameter>
> > >  <parameter name="user">slide</parameter>
> > >  <parameter name="password">slide</parameter>
> > >  <parameter name="dbcpPooling">true</parameter>
> > >  <parameter name="maxPooledConnections">30</parameter>
> > >  <parameter name="isolation">SERIALIZABLE</parameter>
> > >  <parameter name="compress">false</parameter>
> > >  </nodestore>
> > >  <contentstore>
> > >  <reference store="nodestore" />
> > >  </contentstore>
> > >  <securitystore>
> > >  <reference store="nodestore" />
> > >  </securitystore>
> > >  <lockstore>
> > >  <reference store="nodestore" />
> > >  </lockstore>
> > >  <revisiondescriptorsstore>
> > >  <reference store="nodestore" />
> > >  </revisiondescriptorsstore>
> > >  <revisiondescriptorstore>
> > >  <reference store="nodestore" />
> > >  </revisiondescriptorstore>
> > >  </store>
> > >  <scope match="/" store="tx"/>
> > >  <scope match="/db" store="db"/>
> > >  </definition>
> > >  <configuration>
> > >              <!-- Actions mapping -->
> > >  <read-object>/actions/read</read-object>
> > >  <create-object>/actions/write</create-object>
> > >  <remove-object>/actions/write</remove-object>
> > >  <grant-permission>/actions/write-acl</grant-permission>
> > >  <revoke-permission>/actions/write-acl</revoke-permission>
> > >  <read-permissions>/actions/read-acl</read-permissions>
> > > <read-own-permissions>/actions/read-current-user-privilege-set</read-own-permissions>
> > >  <lock-object>/actions/write</lock-object>
> > >  <kill-lock>/actions/unlock</kill-lock>
> > >  <read-locks>/actions/read</read-locks>
> > >  <read-revision-metadata>/actions/read</read-revision-metadata>
> > > <create-revision-metadata>/actions/write-properties</create-revision-metadata>
> > > <modify-revision-metadata>/actions/write-properties</modify-revision-metadata>
> > > <remove-revision-metadata>/actions/write-properties</remove-revision-metadata>
> > >  <read-revision-content>/actions/read</read-revision-content>
> > >  <create-revision-content>/actions/write-content</create-revision-content>
> > >  <modify-revision-content>/actions/write-content</modify-revision-content>
> > >  <remove-revision-content>/actions/write-content</remove-revision-content>
> > >  <bind-member>/actions/bind</bind-member>
> > >  <unbind-member>/actions/unbind</unbind-member>
> > >              <!-- Paths configuration -->
> > >  <userspath>/users</userspath>
> > >  <rolespath>/roles</rolespath>
> > >  <actionspath>/actions</actionspath>
> > >  <filespath>/files</filespath>
> > >  <parameter name="dav">true</parameter>
> > >  <parameter name="standalone">true</parameter>
> > >  <parameter name="acl_inheritance_type">path</parameter>
> > >              <!-- Nested roles: 0 means no nesting (default), 1 means one
> > > sublevel, etc. -->
> > >  <parameter name="nested_roles_maxdepth">0</parameter>
> > >              <!-- Can be "off", "write" and "full" -->
> > >  <parameter name="sequential-mode">full</parameter>
> > >              <!-- "false" lets all read-only methods be executed outside of
> > > transactions -->
> > >  <parameter name="all-methods-in-transactions">true</parameter>
> > >              <!-- Setting this to true will force Slide to internally
> > > convert the username a user
> > >                   enters at login to lowercase. This is useful for users who
> > > can't be bothered
> > >                   with turning off their capslock key before logging in. -->
> > >  <parameter name="force-lowercase-login">false</parameter>
> > >  </configuration>
> > >  <data>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/">
> > >                  <!-- Subject can be:
> > >                  any user             "all"
> > >                  authenticated user   "authenticated"
> > >                  unauthenticated user "unauthenticated"
> > >                  self                 "self"
> > >                  owner of resource    "owner"
> > >                  a user               "/users/john"
> > >                  a role               "/roles/admin"
> > >                  -->
> > >  <permission action="all" subject="/roles/root" inheritable="true"/>
> > >  <permission action="/actions/read-acl" subject="all" inheritable="true"
> > > negative="true"/>
> > >  <permission action="/actions/write-acl" subject="all" inheritable="true"
> > > negative="true"/>
> > >  <permission action="/actions/unlock" subject="all" inheritable="true"
> > > negative="true"/>
> > >  <permission action="/actions/read" subject="all" inheritable="true"/>
> > >  <!-- db store -->
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/db">
> > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > >                      <!--
> > >                      <permission action="/actions/write"
> > > subject="/roles/user" inheritable="true"/>
> > >                      <permission action="/actions/read-acl" subject="owner"
> > > inheritable="true"/>
> > >                      -->
> > >  </objectnode>
> > >                  <!-- /users -->
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/users">
> > >  <permission action="all" subject="self" inheritable="true"/>
> > >  <permission action="all" subject="/roles/projector" inheritable="true"/>
> > >  <permission action="all" subject="unauthenticated" inheritable="true"
> > > negative="true"/>
> > >                      <!-- /users/root represents the administrator -->
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/users/root">
> > >  <revision>
> > >  <property namespace="http://jakarta.apache.org/slide/"
> > > name="password">root</property>
> > >  </revision>
> > >  </objectnode>
> > >                      <!-- /users/john and /users/john2 represent
> > > authenticated users -->
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/users/john">
> > >  <revision>
> > >  <property namespace="http://jakarta.apache.org/slide/"
> > > name="password">john</property>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/users/john2">
> > >  <revision>
> > >  <property namespace="http://jakarta.apache.org/slide/"
> > > name="password">john2</property>
> > >  </revision>
> > >  </objectnode>
> > >                      <!-- /users/guest represents an authenticated or
> > > unauthenticated guest user -->
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/users/guest">
> > >  <revision>
> > >  <property namespace="http://jakarta.apache.org/slide/"
> > > name="password">guest</property>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/users/projector">
> > >  <revision>
> > >  <property namespace="http://jakarta.apache.org/slide/"
> > > name="password">projector</property>
> > >  </revision>
> > >  </objectnode>
> > >  </objectnode>
> > >                  <!-- /roles -->
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/roles">
> > >  <permission action="all" subject="self" inheritable="true"/>
> > >  <permission action="all" subject="/roles/projector" inheritable="true"/>
> > >  <permission action="all" subject="unauthenticated" inheritable="true"
> > > negative="true"/>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/roles/root">
> > >  <revision>
> > >  <property name="group-member-set"><![CDATA[<D:href
> > > xmlns:D='DAV:'>/users/root</D:href>]]></property>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/roles/user">
> > >  <revision>
> > >  <property name="group-member-set"><![CDATA[<D:href
> > > xmlns:D='DAV:'>/users/john</D:href><D:href
> > > xmlns:D='DAV:'>/users/john2</D:href><D:href
> > > xmlns:D='DAV:'>/users/root</D:href><D:href
> > > xmlns:D='DAV:'>/users/projector</D:href>]]></property>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/roles/guest">
> > >  <revision>
> > >  <property name="group-member-set"><![CDATA[<D:href
> > > xmlns:D='DAV:'>/users/guest</D:href>]]></property>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/roles/projector">
> > >  <revision>
> > >  <property name="group-member-set"><![CDATA[<D:href
> > > xmlns:D='DAV:'>/users/root</D:href><D:href
> > > xmlns:D='DAV:'>/users/projector</D:href>]]></property>
> > >  </revision>
> > >  </objectnode>
> > >  </objectnode>
> > >                  <!-- action -->
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions">
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions/read">
> > >  <revision>
> > >  <property name="privilege-member-set"><![CDATA[<D:href
> > > xmlns:D='DAV:'>/actions/read-acl</D:href> <D:href
> > > xmlns:D='DAV:'>/actions/read-current-user-privilege-set</D:href>]]></property>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions/read-acl">
> > >  <revision>
> > >  <property name="privilege-member-set"/>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions/read-current-user-privilege-set">
> > >  <revision>
> > >  <property name="privilege-member-set"/>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions/write">
> > >  <revision>
> > >  <property name="privilege-member-set"><![CDATA[<D:href
> > > xmlns:D='DAV:'>/actions/write-acl</D:href> <D:href
> > > xmlns:D='DAV:'>/actions/write-properties</D:href> <D:href
> > > xmlns:D='DAV:'>/actions/write-content</D:href>]]></property>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions/write-acl">
> > >  <revision>
> > >  <property name="privilege-member-set"/>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions/write-properties">
> > >  <revision>
> > >  <property name="privilege-member-set"/>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions/write-content">
> > >  <revision>
> > >  <property name="privilege-member-set"><![CDATA[<D:href
> > > xmlns:D='DAV:'>/actions/bind</D:href> <D:href
> > > xmlns:D='DAV:'>/actions/unbind</D:href>]]></property>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions/bind">
> > >  <revision>
> > >  <property name="privilege-member-set"/>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions/unbind">
> > >  <revision>
> > >  <property name="privilege-member-set"/>
> > >  </revision>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > > uri="/actions/unlock">
> > >  <revision>
> > >  <property name="privilege-member-set"/>
> > >  </revision>
> > >  </objectnode>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/files">
> > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > >  <permission action="/actions/write" subject="/roles/user"
> > > inheritable="true"/>
> > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/projector">
> > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > >  <permission action="/actions/write" subject="/roles/projector"
> > > inheritable="true"/>
> > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/projector/work"></objectnode>
> > >  </objectnode>
> > >                  <!-- DeltaV: default history and workspace paths -->
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/history">
> > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > >  <permission action="/actions/write" subject="/roles/user"
> > > inheritable="true"/>
> > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/workspace">
> > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > >  <permission action="/actions/write" subject="/roles/user"
> > > inheritable="true"/>
> > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > >  </objectnode>
> > >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > > uri="/workingresource">
> > >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> > >  <permission action="/actions/write" subject="/roles/user"
> > > inheritable="true"/>
> > >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> > >  </objectnode>
> > >  </objectnode>
> > >  </data>
> > >  </namespace>
> > >      <!--
> > >      DeltaV global parameters
> > >      ========================
> > >      * historypath (mandatory=no, default="/history"):
> > >      Specifies a Slide path which determines the location where this DeltaV
> > >      server stores history data.
> > >
> > >      * workspacepath (mandatory=no, default="/workspace"):
> > >      Specifies a Slide path which determines the location where this DeltaV
> > >      server allows workspaces to reside.
> > >
> > >      * workingresourcepath (mandatory=no, default="/workingresource"):
> > >      Specifies a Slide path which determines the location where this DeltaV
> > >      server stores working resources.
> > >
> > >      * auto-version (mandatory=no, default="checkout-checkin"):
> > >      Controls the DeltaV auto-version behaviour.
> > >
> > >      * auto-version-control (mandatory=no, default="false"):
> > >      Indicates if a resource just created by a PUT should be set under
> > >      version-control.
> > >
> > >      * versioncontrol-exclude (mandatory=no, default=""):
> > >      Specifies a Slide path which determines resources which are excluded
> > > from version-control.
> > >      The default value "" makes no path being excluded.
> > >
> > >      * checkout-fork (mandatory=no, default="forbidden"):
> > >      Controls the DeltaV check-out behaviour when a version is already
> > >      checked-out or has a successor.
> > >
> > >      * checkin-fork (mandatory=no, default="forbidden"):
> > >      Controls the DeltaV check-out behaviour when a version has already a
> > >      successor.
> > >
> > >      * standardLivePropertiesClass (mandatory=no,
> > >
> > > default="org.apache.slide.webdav.util.resourcekind.AbstractResourceKind"):
> > >      Determines the "agent" knowing about what the standard live properties
> > > are.
> > >      It should be a loadable class containing the following static methods:
> > >      - boolean isLiveProperty(String propName)
> > >      - boolean isProtectedProperty(String propName)
> > >      - boolean isComputedProperty(String propName)
> > >      - Set getAllLiveProperties()
> > >      - Set getAllProtectedProperties()
> > >      - Set getAllComputedProperties()
> > >
> > >      * uriRedirectorClass (mandatory=no,
> > >      default="org.apache.slide.webdav.util.DeltavUriRedirector"):
> > >      Determines the URI redirector class. The DeltaV URI redirector is in
> > >      charge of the following redirections:
> > >      - version URI to history URI, e.g. /history/2/1.4 to /history/2
> > >      - latest revision number for history resource to 0.0
> > >      - latest revision number for version resource to last URI token,
> > >      e.g. /history/2/1.4 to 1.4
> > >      It should be a loadable class containing the following static methods:
> > >      - String redirectUri(String uri)
> > >      - NodeRevisionNumber redirectLatestRevisionNumber(String uri)
> > >      -->
> > >  <parameter name="historypath">/history</parameter>
> > >  <parameter name="workspacepath">/workspace</parameter>
> > >  <parameter name="workingresourcepath">/workingresource</parameter>
> > >  <parameter name="auto-version">checkout-checkin</parameter>
> > >  <parameter name="auto-version-control">false</parameter>
> > >  <parameter name="versioncontrol-exclude"/>
> > >  <parameter name="checkout-fork">forbidden</parameter>
> > >  <parameter name="checkin-fork">forbidden</parameter>
> > >
> > >
> > >      <!-- Extractor configuration -->
> > >  <extractors>
> > >  <extractor classname="org.apache.slide.extractor.SimpleXmlExtractor"
> > > uri="/files/articles/test.xml">
> > >  <configuration>
> > >  <instruction property="title" xpath="/article/title/text()" />
> > >  <instruction property="summary" xpath="/article/summary/text()" />
> > >  </configuration>
> > >  </extractor>
> > >  <extractor classname="org.apache.slide.extractor.OfficeExtractor"
> > > uri="/files/docs/">
> > >  <configuration>
> > >  <instruction property="author" id="SummaryInformation-0-4" />
> > >  <instruction property="application" id="SummaryInformation-0-18" />
> > >  </configuration>
> > >  </extractor>
> > >  </extractors>
> > >
> > >      <!-- Event configuration -->
> > >  <events>
> > >  <event classname="org.apache.slide.webdav.event.WebdavEvent" enable="true"
> > > />
> > >  <event classname="org.apache.slide.event.ContentEvent" enable="true" />
> > >  <event classname="org.apache.slide.event.ContentEvent" method="retrieve"
> > > enable="false" />
> > >  <event classname="org.apache.slide.event.EventCollection" enable="true" />
> > >  <event classname="org.apache.slide.event.TransactionEvent" enable="true" />
> > >
> > >  <event classname="org.apache.slide.event.MacroEvent" enable="true"/>
> > >
> > >          <!--listener classname="org.apache.slide.util.event.EventLogger"
> > > /-->
> > >  <listener classname="org.apache.slide.event.VetoableEventCollector" />
> > >  <listener classname="org.apache.slide.event.TransientEventCollector" />
> > >  <listener classname="org.apache.slide.webdav.event.NotificationTrigger">
> > >  <configuration>
> > >  <notification include-events="false" />
> > >  <persist-subscriptions filename="subscriptions.xml" />
> > >  </configuration>
> > >  </listener>
> > >  <listener classname="org.apache.slide.extractor.PropertyExtractorTrigger"
> > > />
> > >  <listener classname="org.apache.slide.search.IndexTrigger">
> > >  <configuration>
> > >  <indexer classname="org.apache.slide.search.LoggingIndexer"
> > > synchronous="false" uri="/files/articles" />
> > >  </configuration>
> > >  </listener>
> > >
> > >  <!-- Uncomment for cluster support. Be sure to local-host and
> > > repository-host -->
> > >  <!--
> > >  <listener classname="org.apache.slide.cluster.ClusterCacheRefresher">
> > >  <configuration>
> > >  <node local-host="local.host.domain"
> > >        local-port="4444"
> > >    repository-host="remote.host.domain"
> > >    repository-port="8080"
> > >    repository-protocol="http"
> > >    username="root"
> > >    password="root"
> > >    base-uri="/files/"
> > >  />
> > >  </configuration>
> > >  </listener>
> > >  -->
> > >
> > >  <listener classname="org.apache.slide.macro.MacroPropertyUpdater">
> > >            <!-- Listener that updates some properties if resources are
> > >                 copied or moved.  This requires MacroEvents enabled (at
> > >                 least methods copy and move) -->
> > >  <configuration>
> > >  <update-displayname>true</update-displayname>
> > >  <update-owner-on-move>false</update-owner-on-move>
> > >  <update-owner-on-copy>true</update-owner-on-copy>
> > >  </configuration>
> > >  </listener>
> > >  </events>
> > >  </slide>
> > >
> > >  Stack Trace:
> > >  ==========
> > >
> > >  19 Nov 2004 15:55:05 - org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter
> > > - ERROR - SQL error 1205 on /db/load_test/user_3: Deadlock found when trying
> > > to get lock; Try restarting transaction,  message from server: "Lock wait
> > > timeout exceeded; Try restarting transaction"
> > >  java.sql.SQLException: Deadlock found when trying to get lock; Try
> > > restarting transaction,  message from server: "Lock wait timeout exceeded;
> > > Try restarting transaction"
> > >          at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
> > >          at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
> > >          at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
> > >          at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
> > >          at
> > > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
> > >          at
> > > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
> > >          at
> > > org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
> > >          at
> > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:1345)
> > >          at
> > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
> > >          at
> > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
> > >          at
> > > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
> > >          at
> > > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
> > >          at
> > > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
> > >          at
> > > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
> > >          at
> > > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
> > >          at
> > > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
> > >          at
> > > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
> > >          at
> > > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
> > >          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:462)
> > >          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:117)
> > >          at
> > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> > >          at
> > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> > >          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.processConnection(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)
> > >  org.apache.slide.common.ServiceAccessException: Service
> > > org.apache.slide.store.impl.rdbms.JDBCStore@2bfdff access error : Deadlock
> > > found when trying to get lock; Try restarting transaction,  message from
> > > server: "Lock wait timeout exceeded; Try restarting transaction"
> > >          at
> > > org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
> > >          at
> > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
> > >          at
> > > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
> > >          at
> > > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
> > >          at
> > > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
> > >          at
> > > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
> > >          at
> > > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
> > >          at
> > > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
> > >          at
> > > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
> > >          at
> > > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
> > >          at
> > > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
> > >          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:462)
> > >          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:117)
> > >          at
> > > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> > >          at
> > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> > >          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.processConnection(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)
> > >  http-8080-Processor11, 19-Nov-2004 15:52:31, unauthenticated, PUT, 500
> > > "Internal Server Error", 153875 ms, /db/load_test/user_3/dummy_1100908351664
> > >
> > >
> > >
> > >  -Mirko
> > >
> > >
> > >
> > >
> > >  On Fri, 2004-11-19 at 16:17, Oliver Zeigermann wrote:
> > >  Make sure you have <parameter name="sequential-mode">full</parameter>
> > > <parameter name="all-methods-in-transactions">true</parameter> in the
> > > configuration sections of Domain.xml which is default for Slide 2.1b2. I
> > > have run concurrent tests with 20 threads all writing to the same collection
> > > resp. to different ones. One problems.... Oliver On Sat, 20 Nov 2004
> > > 01:05:54 +0100, Oliver Zeigermann <ol...@gmail.com> wrote: >
> > > Please send your Domain.xml and the stack traces of said exceptions. > You
> > > said your were using 2.1b2? > > Oliver
> > >
> >
>

Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
I just tried this

TProcessor.CMD -pattern *cases\\functional\\extra\\multi-user* -users
20 -iterations 10

which is 20 threads repeating uploads, deletes for 10 times and
meanwhile browsed Slide with the Windows explorer and it worked
without deadlocks.

Caching was turned off as well.

However, my store is the tx file one and I can not exclude there are
still programming errors in the MySQL store as I have never used it.
Lately problems were reported with other db stores when not using
compression mode. Could you try it again with compression turned on
and see if this changes anything.

Oliver

On Sat, 20 Nov 2004 09:31:17 +0100, Oliver Zeigermann
<ol...@gmail.com> wrote:
> OK, thanks for providing that info. I will have a look at it ASAP.
> Which MySQL version are you using?
> 
> Oliver
> 
> 
> On Fri, 19 Nov 2004 17:44:11 -0800, Mirko Froehlich
> 
> 
> <mf...@digitalchocolate.com> wrote:
> >  Yes, I'm using 2.1b2. I have copied my domain.xml below. It does have the
> > two parameters you mentioned. One thing I should mention is that I disabled
> > caching, because I really wanted to simulate the effect of iterating over
> > new content without the effects of caching. My domain.xml defines both a
> > text and a JDBC store, but the JDBC store is the one I'm using for this
> > test. I have also included one of the stack traces below.
> >
> >
> >  Domain.xml:
> >  =========
> >
> >  <?xml version="1.0"?>
> >  <slide>
> >  <namespace name="slide">
> >  <definition>
> >  <store name="tx">
> >  <!-- cache settings (added by mirko) -->
> >  <parameter name="cache-mode">off</parameter>
> >  <parameter name="enable-content-caching">false</parameter>
> >  <parameter name="content-cache-size">1000</parameter>
> >  <parameter name="object-cache-size">1000</parameter>
> >
> >  <parameter name="tlock-timeout">120</parameter>
> >  <nodestore
> > classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
> >  <parameter
> > name="rootpath">/usr/local/jakarta-slide/repository/store/metadata</parameter>
> >  <parameter
> > name="workpath">/usr/local/jakarta-slide/repository/work/metadata</parameter>
> >  <parameter name="defer-saving">true</parameter>
> >  <parameter name="timeout">120</parameter>
> >  </nodestore>
> >  <sequencestore classname="org.apache.slide.store.txfile.FileSequenceStore">
> >  <parameter
> > name="rootpath">/usr/local/jakarta-slide/repository/store/sequence</parameter>
> >  </sequencestore>
> >  <securitystore>
> >  <reference store="nodestore"/>
> >  </securitystore>
> >  <lockstore>
> >  <reference store="nodestore"/>
> >  </lockstore>
> >  <revisiondescriptorsstore>
> >  <reference store="nodestore"/>
> >  </revisiondescriptorsstore>
> >  <revisiondescriptorstore>
> >  <reference store="nodestore"/>
> >  </revisiondescriptorstore>
> >  <contentstore classname="org.apache.slide.store.txfile.TxFileContentStore">
> >  <parameter
> > name="rootpath">/usr/local/jakarta-slide/repository/store/content</parameter>
> >  <parameter
> > name="workpath">/usr/local/jakarta-slide/repository/work/content</parameter>
> >  <parameter name="defer-saving">true</parameter>
> >  <parameter name="timeout">120</parameter>
> >  </contentstore>
> >                  <!-- uncomment if you want to use the sample Indexer -->
> >                  <!-- be sure to have Lucene in your classpath
> > -->
> >                  <!--
> >                  <contentindexer
> > classname="org.apache.slide.index.SampleTxtContainsIndexer">
> >                  <parameter name="indexpath">./index</parameter>
> >                  </contentindexer>
> >          -->
> >  </store>
> >  <store name="db">
> >  <!-- cache settings (added by mirko) -->
> >  <parameter name="cache-mode">off</parameter>
> >  <parameter name="enable-content-caching">false</parameter>
> >  <parameter name="content-cache-size">1000</parameter>
> >  <parameter name="object-cache-size">1000</parameter>
> >
> >  <nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
> >  <parameter
> > name="adapter">org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter</parameter>
> >  <parameter name="driver">com.mysql.jdbc.Driver</parameter>
> >  <parameter name="url">jdbc:mysql://localhost/slide</parameter>
> >  <parameter name="user">slide</parameter>
> >  <parameter name="password">slide</parameter>
> >  <parameter name="dbcpPooling">true</parameter>
> >  <parameter name="maxPooledConnections">30</parameter>
> >  <parameter name="isolation">SERIALIZABLE</parameter>
> >  <parameter name="compress">false</parameter>
> >  </nodestore>
> >  <contentstore>
> >  <reference store="nodestore" />
> >  </contentstore>
> >  <securitystore>
> >  <reference store="nodestore" />
> >  </securitystore>
> >  <lockstore>
> >  <reference store="nodestore" />
> >  </lockstore>
> >  <revisiondescriptorsstore>
> >  <reference store="nodestore" />
> >  </revisiondescriptorsstore>
> >  <revisiondescriptorstore>
> >  <reference store="nodestore" />
> >  </revisiondescriptorstore>
> >  </store>
> >  <scope match="/" store="tx"/>
> >  <scope match="/db" store="db"/>
> >  </definition>
> >  <configuration>
> >              <!-- Actions mapping -->
> >  <read-object>/actions/read</read-object>
> >  <create-object>/actions/write</create-object>
> >  <remove-object>/actions/write</remove-object>
> >  <grant-permission>/actions/write-acl</grant-permission>
> >  <revoke-permission>/actions/write-acl</revoke-permission>
> >  <read-permissions>/actions/read-acl</read-permissions>
> > <read-own-permissions>/actions/read-current-user-privilege-set</read-own-permissions>
> >  <lock-object>/actions/write</lock-object>
> >  <kill-lock>/actions/unlock</kill-lock>
> >  <read-locks>/actions/read</read-locks>
> >  <read-revision-metadata>/actions/read</read-revision-metadata>
> > <create-revision-metadata>/actions/write-properties</create-revision-metadata>
> > <modify-revision-metadata>/actions/write-properties</modify-revision-metadata>
> > <remove-revision-metadata>/actions/write-properties</remove-revision-metadata>
> >  <read-revision-content>/actions/read</read-revision-content>
> >  <create-revision-content>/actions/write-content</create-revision-content>
> >  <modify-revision-content>/actions/write-content</modify-revision-content>
> >  <remove-revision-content>/actions/write-content</remove-revision-content>
> >  <bind-member>/actions/bind</bind-member>
> >  <unbind-member>/actions/unbind</unbind-member>
> >              <!-- Paths configuration -->
> >  <userspath>/users</userspath>
> >  <rolespath>/roles</rolespath>
> >  <actionspath>/actions</actionspath>
> >  <filespath>/files</filespath>
> >  <parameter name="dav">true</parameter>
> >  <parameter name="standalone">true</parameter>
> >  <parameter name="acl_inheritance_type">path</parameter>
> >              <!-- Nested roles: 0 means no nesting (default), 1 means one
> > sublevel, etc. -->
> >  <parameter name="nested_roles_maxdepth">0</parameter>
> >              <!-- Can be "off", "write" and "full" -->
> >  <parameter name="sequential-mode">full</parameter>
> >              <!-- "false" lets all read-only methods be executed outside of
> > transactions -->
> >  <parameter name="all-methods-in-transactions">true</parameter>
> >              <!-- Setting this to true will force Slide to internally
> > convert the username a user
> >                   enters at login to lowercase. This is useful for users who
> > can't be bothered
> >                   with turning off their capslock key before logging in. -->
> >  <parameter name="force-lowercase-login">false</parameter>
> >  </configuration>
> >  <data>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/">
> >                  <!-- Subject can be:
> >                  any user             "all"
> >                  authenticated user   "authenticated"
> >                  unauthenticated user "unauthenticated"
> >                  self                 "self"
> >                  owner of resource    "owner"
> >                  a user               "/users/john"
> >                  a role               "/roles/admin"
> >                  -->
> >  <permission action="all" subject="/roles/root" inheritable="true"/>
> >  <permission action="/actions/read-acl" subject="all" inheritable="true"
> > negative="true"/>
> >  <permission action="/actions/write-acl" subject="all" inheritable="true"
> > negative="true"/>
> >  <permission action="/actions/unlock" subject="all" inheritable="true"
> > negative="true"/>
> >  <permission action="/actions/read" subject="all" inheritable="true"/>
> >  <!-- db store -->
> >  <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/db">
> >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> >                      <!--
> >                      <permission action="/actions/write"
> > subject="/roles/user" inheritable="true"/>
> >                      <permission action="/actions/read-acl" subject="owner"
> > inheritable="true"/>
> >                      -->
> >  </objectnode>
> >                  <!-- /users -->
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/users">
> >  <permission action="all" subject="self" inheritable="true"/>
> >  <permission action="all" subject="/roles/projector" inheritable="true"/>
> >  <permission action="all" subject="unauthenticated" inheritable="true"
> > negative="true"/>
> >                      <!-- /users/root represents the administrator -->
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/users/root">
> >  <revision>
> >  <property namespace="http://jakarta.apache.org/slide/"
> > name="password">root</property>
> >  </revision>
> >  </objectnode>
> >                      <!-- /users/john and /users/john2 represent
> > authenticated users -->
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/users/john">
> >  <revision>
> >  <property namespace="http://jakarta.apache.org/slide/"
> > name="password">john</property>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/users/john2">
> >  <revision>
> >  <property namespace="http://jakarta.apache.org/slide/"
> > name="password">john2</property>
> >  </revision>
> >  </objectnode>
> >                      <!-- /users/guest represents an authenticated or
> > unauthenticated guest user -->
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/users/guest">
> >  <revision>
> >  <property namespace="http://jakarta.apache.org/slide/"
> > name="password">guest</property>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/users/projector">
> >  <revision>
> >  <property namespace="http://jakarta.apache.org/slide/"
> > name="password">projector</property>
> >  </revision>
> >  </objectnode>
> >  </objectnode>
> >                  <!-- /roles -->
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/roles">
> >  <permission action="all" subject="self" inheritable="true"/>
> >  <permission action="all" subject="/roles/projector" inheritable="true"/>
> >  <permission action="all" subject="unauthenticated" inheritable="true"
> > negative="true"/>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/roles/root">
> >  <revision>
> >  <property name="group-member-set"><![CDATA[<D:href
> > xmlns:D='DAV:'>/users/root</D:href>]]></property>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/roles/user">
> >  <revision>
> >  <property name="group-member-set"><![CDATA[<D:href
> > xmlns:D='DAV:'>/users/john</D:href><D:href
> > xmlns:D='DAV:'>/users/john2</D:href><D:href
> > xmlns:D='DAV:'>/users/root</D:href><D:href
> > xmlns:D='DAV:'>/users/projector</D:href>]]></property>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/roles/guest">
> >  <revision>
> >  <property name="group-member-set"><![CDATA[<D:href
> > xmlns:D='DAV:'>/users/guest</D:href>]]></property>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/roles/projector">
> >  <revision>
> >  <property name="group-member-set"><![CDATA[<D:href
> > xmlns:D='DAV:'>/users/root</D:href><D:href
> > xmlns:D='DAV:'>/users/projector</D:href>]]></property>
> >  </revision>
> >  </objectnode>
> >  </objectnode>
> >                  <!-- action -->
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions">
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions/read">
> >  <revision>
> >  <property name="privilege-member-set"><![CDATA[<D:href
> > xmlns:D='DAV:'>/actions/read-acl</D:href> <D:href
> > xmlns:D='DAV:'>/actions/read-current-user-privilege-set</D:href>]]></property>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions/read-acl">
> >  <revision>
> >  <property name="privilege-member-set"/>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions/read-current-user-privilege-set">
> >  <revision>
> >  <property name="privilege-member-set"/>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions/write">
> >  <revision>
> >  <property name="privilege-member-set"><![CDATA[<D:href
> > xmlns:D='DAV:'>/actions/write-acl</D:href> <D:href
> > xmlns:D='DAV:'>/actions/write-properties</D:href> <D:href
> > xmlns:D='DAV:'>/actions/write-content</D:href>]]></property>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions/write-acl">
> >  <revision>
> >  <property name="privilege-member-set"/>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions/write-properties">
> >  <revision>
> >  <property name="privilege-member-set"/>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions/write-content">
> >  <revision>
> >  <property name="privilege-member-set"><![CDATA[<D:href
> > xmlns:D='DAV:'>/actions/bind</D:href> <D:href
> > xmlns:D='DAV:'>/actions/unbind</D:href>]]></property>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions/bind">
> >  <revision>
> >  <property name="privilege-member-set"/>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions/unbind">
> >  <revision>
> >  <property name="privilege-member-set"/>
> >  </revision>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.ActionNode"
> > uri="/actions/unlock">
> >  <revision>
> >  <property name="privilege-member-set"/>
> >  </revision>
> >  </objectnode>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/files">
> >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> >  <permission action="/actions/write" subject="/roles/user"
> > inheritable="true"/>
> >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/projector">
> >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> >  <permission action="/actions/write" subject="/roles/projector"
> > inheritable="true"/>
> >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/projector/work"></objectnode>
> >  </objectnode>
> >                  <!-- DeltaV: default history and workspace paths -->
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/history">
> >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> >  <permission action="/actions/write" subject="/roles/user"
> > inheritable="true"/>
> >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/workspace">
> >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> >  <permission action="/actions/write" subject="/roles/user"
> > inheritable="true"/>
> >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> >  </objectnode>
> >  <objectnode classname="org.apache.slide.structure.SubjectNode"
> > uri="/workingresource">
> >  <permission action="all" subject="unauthenticated" inheritable="true"/>
> >  <permission action="/actions/write" subject="/roles/user"
> > inheritable="true"/>
> >  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
> >  </objectnode>
> >  </objectnode>
> >  </data>
> >  </namespace>
> >      <!--
> >      DeltaV global parameters
> >      ========================
> >      * historypath (mandatory=no, default="/history"):
> >      Specifies a Slide path which determines the location where this DeltaV
> >      server stores history data.
> >
> >      * workspacepath (mandatory=no, default="/workspace"):
> >      Specifies a Slide path which determines the location where this DeltaV
> >      server allows workspaces to reside.
> >
> >      * workingresourcepath (mandatory=no, default="/workingresource"):
> >      Specifies a Slide path which determines the location where this DeltaV
> >      server stores working resources.
> >
> >      * auto-version (mandatory=no, default="checkout-checkin"):
> >      Controls the DeltaV auto-version behaviour.
> >
> >      * auto-version-control (mandatory=no, default="false"):
> >      Indicates if a resource just created by a PUT should be set under
> >      version-control.
> >
> >      * versioncontrol-exclude (mandatory=no, default=""):
> >      Specifies a Slide path which determines resources which are excluded
> > from version-control.
> >      The default value "" makes no path being excluded.
> >
> >      * checkout-fork (mandatory=no, default="forbidden"):
> >      Controls the DeltaV check-out behaviour when a version is already
> >      checked-out or has a successor.
> >
> >      * checkin-fork (mandatory=no, default="forbidden"):
> >      Controls the DeltaV check-out behaviour when a version has already a
> >      successor.
> >
> >      * standardLivePropertiesClass (mandatory=no,
> >
> > default="org.apache.slide.webdav.util.resourcekind.AbstractResourceKind"):
> >      Determines the "agent" knowing about what the standard live properties
> > are.
> >      It should be a loadable class containing the following static methods:
> >      - boolean isLiveProperty(String propName)
> >      - boolean isProtectedProperty(String propName)
> >      - boolean isComputedProperty(String propName)
> >      - Set getAllLiveProperties()
> >      - Set getAllProtectedProperties()
> >      - Set getAllComputedProperties()
> >
> >      * uriRedirectorClass (mandatory=no,
> >      default="org.apache.slide.webdav.util.DeltavUriRedirector"):
> >      Determines the URI redirector class. The DeltaV URI redirector is in
> >      charge of the following redirections:
> >      - version URI to history URI, e.g. /history/2/1.4 to /history/2
> >      - latest revision number for history resource to 0.0
> >      - latest revision number for version resource to last URI token,
> >      e.g. /history/2/1.4 to 1.4
> >      It should be a loadable class containing the following static methods:
> >      - String redirectUri(String uri)
> >      - NodeRevisionNumber redirectLatestRevisionNumber(String uri)
> >      -->
> >  <parameter name="historypath">/history</parameter>
> >  <parameter name="workspacepath">/workspace</parameter>
> >  <parameter name="workingresourcepath">/workingresource</parameter>
> >  <parameter name="auto-version">checkout-checkin</parameter>
> >  <parameter name="auto-version-control">false</parameter>
> >  <parameter name="versioncontrol-exclude"/>
> >  <parameter name="checkout-fork">forbidden</parameter>
> >  <parameter name="checkin-fork">forbidden</parameter>
> >
> >
> >      <!-- Extractor configuration -->
> >  <extractors>
> >  <extractor classname="org.apache.slide.extractor.SimpleXmlExtractor"
> > uri="/files/articles/test.xml">
> >  <configuration>
> >  <instruction property="title" xpath="/article/title/text()" />
> >  <instruction property="summary" xpath="/article/summary/text()" />
> >  </configuration>
> >  </extractor>
> >  <extractor classname="org.apache.slide.extractor.OfficeExtractor"
> > uri="/files/docs/">
> >  <configuration>
> >  <instruction property="author" id="SummaryInformation-0-4" />
> >  <instruction property="application" id="SummaryInformation-0-18" />
> >  </configuration>
> >  </extractor>
> >  </extractors>
> >
> >      <!-- Event configuration -->
> >  <events>
> >  <event classname="org.apache.slide.webdav.event.WebdavEvent" enable="true"
> > />
> >  <event classname="org.apache.slide.event.ContentEvent" enable="true" />
> >  <event classname="org.apache.slide.event.ContentEvent" method="retrieve"
> > enable="false" />
> >  <event classname="org.apache.slide.event.EventCollection" enable="true" />
> >  <event classname="org.apache.slide.event.TransactionEvent" enable="true" />
> >
> >  <event classname="org.apache.slide.event.MacroEvent" enable="true"/>
> >
> >          <!--listener classname="org.apache.slide.util.event.EventLogger"
> > /-->
> >  <listener classname="org.apache.slide.event.VetoableEventCollector" />
> >  <listener classname="org.apache.slide.event.TransientEventCollector" />
> >  <listener classname="org.apache.slide.webdav.event.NotificationTrigger">
> >  <configuration>
> >  <notification include-events="false" />
> >  <persist-subscriptions filename="subscriptions.xml" />
> >  </configuration>
> >  </listener>
> >  <listener classname="org.apache.slide.extractor.PropertyExtractorTrigger"
> > />
> >  <listener classname="org.apache.slide.search.IndexTrigger">
> >  <configuration>
> >  <indexer classname="org.apache.slide.search.LoggingIndexer"
> > synchronous="false" uri="/files/articles" />
> >  </configuration>
> >  </listener>
> >
> >  <!-- Uncomment for cluster support. Be sure to local-host and
> > repository-host -->
> >  <!--
> >  <listener classname="org.apache.slide.cluster.ClusterCacheRefresher">
> >  <configuration>
> >  <node local-host="local.host.domain"
> >        local-port="4444"
> >    repository-host="remote.host.domain"
> >    repository-port="8080"
> >    repository-protocol="http"
> >    username="root"
> >    password="root"
> >    base-uri="/files/"
> >  />
> >  </configuration>
> >  </listener>
> >  -->
> >
> >  <listener classname="org.apache.slide.macro.MacroPropertyUpdater">
> >            <!-- Listener that updates some properties if resources are
> >                 copied or moved.  This requires MacroEvents enabled (at
> >                 least methods copy and move) -->
> >  <configuration>
> >  <update-displayname>true</update-displayname>
> >  <update-owner-on-move>false</update-owner-on-move>
> >  <update-owner-on-copy>true</update-owner-on-copy>
> >  </configuration>
> >  </listener>
> >  </events>
> >  </slide>
> >
> >  Stack Trace:
> >  ==========
> >
> >  19 Nov 2004 15:55:05 - org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter
> > - ERROR - SQL error 1205 on /db/load_test/user_3: Deadlock found when trying
> > to get lock; Try restarting transaction,  message from server: "Lock wait
> > timeout exceeded; Try restarting transaction"
> >  java.sql.SQLException: Deadlock found when trying to get lock; Try
> > restarting transaction,  message from server: "Lock wait timeout exceeded;
> > Try restarting transaction"
> >          at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
> >          at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
> >          at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
> >          at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
> >          at
> > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
> >          at
> > com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
> >          at
> > org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
> >          at
> > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:1345)
> >          at
> > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
> >          at
> > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
> >          at
> > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
> >          at
> > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
> >          at
> > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
> >          at
> > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
> >          at
> > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
> >          at
> > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
> >          at
> > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
> >          at
> > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
> >          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:462)
> >          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:117)
> >          at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> >          at
> > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> >          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.processConnection(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)
> >  org.apache.slide.common.ServiceAccessException: Service
> > org.apache.slide.store.impl.rdbms.JDBCStore@2bfdff access error : Deadlock
> > found when trying to get lock; Try restarting transaction,  message from
> > server: "Lock wait timeout exceeded; Try restarting transaction"
> >          at
> > org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
> >          at
> > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
> >          at
> > org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
> >          at
> > org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
> >          at
> > org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
> >          at
> > org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
> >          at
> > org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
> >          at
> > org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
> >          at
> > org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
> >          at
> > org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
> >          at
> > org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
> >          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:462)
> >          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:117)
> >          at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> >          at
> > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> >          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.processConnection(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)
> >  http-8080-Processor11, 19-Nov-2004 15:52:31, unauthenticated, PUT, 500
> > "Internal Server Error", 153875 ms, /db/load_test/user_3/dummy_1100908351664
> >
> >
> >
> >  -Mirko
> >
> >
> >
> >
> >  On Fri, 2004-11-19 at 16:17, Oliver Zeigermann wrote:
> >  Make sure you have <parameter name="sequential-mode">full</parameter>
> > <parameter name="all-methods-in-transactions">true</parameter> in the
> > configuration sections of Domain.xml which is default for Slide 2.1b2. I
> > have run concurrent tests with 20 threads all writing to the same collection
> > resp. to different ones. One problems.... Oliver On Sat, 20 Nov 2004
> > 01:05:54 +0100, Oliver Zeigermann <ol...@gmail.com> wrote: >
> > Please send your Domain.xml and the stack traces of said exceptions. > You
> > said your were using 2.1b2? > > Oliver
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
OK, thanks for providing that info. I will have a look at it ASAP.
Which MySQL version are you using?

Oliver


On Fri, 19 Nov 2004 17:44:11 -0800, Mirko Froehlich
<mf...@digitalchocolate.com> wrote:
>  Yes, I'm using 2.1b2. I have copied my domain.xml below. It does have the
> two parameters you mentioned. One thing I should mention is that I disabled
> caching, because I really wanted to simulate the effect of iterating over
> new content without the effects of caching. My domain.xml defines both a
> text and a JDBC store, but the JDBC store is the one I'm using for this
> test. I have also included one of the stack traces below.
>  
>  
>  Domain.xml:
>  =========
>  
>  <?xml version="1.0"?>
>  <slide>
>  <namespace name="slide">
>  <definition>
>  <store name="tx">
>  <!-- cache settings (added by mirko) -->
>  <parameter name="cache-mode">off</parameter>
>  <parameter name="enable-content-caching">false</parameter>
>  <parameter name="content-cache-size">1000</parameter>
>  <parameter name="object-cache-size">1000</parameter>
>  
>  <parameter name="tlock-timeout">120</parameter>
>  <nodestore
> classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
>  <parameter
> name="rootpath">/usr/local/jakarta-slide/repository/store/metadata</parameter>
>  <parameter
> name="workpath">/usr/local/jakarta-slide/repository/work/metadata</parameter>
>  <parameter name="defer-saving">true</parameter>
>  <parameter name="timeout">120</parameter>
>  </nodestore>
>  <sequencestore classname="org.apache.slide.store.txfile.FileSequenceStore">
>  <parameter
> name="rootpath">/usr/local/jakarta-slide/repository/store/sequence</parameter>
>  </sequencestore>
>  <securitystore>
>  <reference store="nodestore"/>
>  </securitystore>
>  <lockstore>
>  <reference store="nodestore"/>
>  </lockstore>
>  <revisiondescriptorsstore>
>  <reference store="nodestore"/>
>  </revisiondescriptorsstore>
>  <revisiondescriptorstore>
>  <reference store="nodestore"/>
>  </revisiondescriptorstore>
>  <contentstore classname="org.apache.slide.store.txfile.TxFileContentStore">
>  <parameter
> name="rootpath">/usr/local/jakarta-slide/repository/store/content</parameter>
>  <parameter
> name="workpath">/usr/local/jakarta-slide/repository/work/content</parameter>
>  <parameter name="defer-saving">true</parameter>
>  <parameter name="timeout">120</parameter>
>  </contentstore>
>                  <!-- uncomment if you want to use the sample Indexer -->
>                  <!-- be sure to have Lucene in your classpath            
> -->
>                  <!--
>                  <contentindexer
> classname="org.apache.slide.index.SampleTxtContainsIndexer">
>                  <parameter name="indexpath">./index</parameter>
>                  </contentindexer>
>          -->
>  </store>
>  <store name="db">
>  <!-- cache settings (added by mirko) -->
>  <parameter name="cache-mode">off</parameter>
>  <parameter name="enable-content-caching">false</parameter>
>  <parameter name="content-cache-size">1000</parameter>
>  <parameter name="object-cache-size">1000</parameter>
>  
>  <nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
>  <parameter
> name="adapter">org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter</parameter>
>  <parameter name="driver">com.mysql.jdbc.Driver</parameter>
>  <parameter name="url">jdbc:mysql://localhost/slide</parameter>
>  <parameter name="user">slide</parameter>
>  <parameter name="password">slide</parameter>
>  <parameter name="dbcpPooling">true</parameter>
>  <parameter name="maxPooledConnections">30</parameter>
>  <parameter name="isolation">SERIALIZABLE</parameter>
>  <parameter name="compress">false</parameter>
>  </nodestore>
>  <contentstore>
>  <reference store="nodestore" />
>  </contentstore>
>  <securitystore>
>  <reference store="nodestore" />
>  </securitystore>
>  <lockstore>
>  <reference store="nodestore" />
>  </lockstore>
>  <revisiondescriptorsstore>
>  <reference store="nodestore" />
>  </revisiondescriptorsstore>
>  <revisiondescriptorstore>
>  <reference store="nodestore" />
>  </revisiondescriptorstore>
>  </store>
>  <scope match="/" store="tx"/>
>  <scope match="/db" store="db"/>
>  </definition>
>  <configuration>
>              <!-- Actions mapping -->
>  <read-object>/actions/read</read-object>
>  <create-object>/actions/write</create-object>
>  <remove-object>/actions/write</remove-object>
>  <grant-permission>/actions/write-acl</grant-permission>
>  <revoke-permission>/actions/write-acl</revoke-permission>
>  <read-permissions>/actions/read-acl</read-permissions>
> <read-own-permissions>/actions/read-current-user-privilege-set</read-own-permissions>
>  <lock-object>/actions/write</lock-object>
>  <kill-lock>/actions/unlock</kill-lock>
>  <read-locks>/actions/read</read-locks>
>  <read-revision-metadata>/actions/read</read-revision-metadata>
> <create-revision-metadata>/actions/write-properties</create-revision-metadata>
> <modify-revision-metadata>/actions/write-properties</modify-revision-metadata>
> <remove-revision-metadata>/actions/write-properties</remove-revision-metadata>
>  <read-revision-content>/actions/read</read-revision-content>
>  <create-revision-content>/actions/write-content</create-revision-content>
>  <modify-revision-content>/actions/write-content</modify-revision-content>
>  <remove-revision-content>/actions/write-content</remove-revision-content>
>  <bind-member>/actions/bind</bind-member>
>  <unbind-member>/actions/unbind</unbind-member>
>              <!-- Paths configuration -->
>  <userspath>/users</userspath>
>  <rolespath>/roles</rolespath>
>  <actionspath>/actions</actionspath>
>  <filespath>/files</filespath>
>  <parameter name="dav">true</parameter>
>  <parameter name="standalone">true</parameter>
>  <parameter name="acl_inheritance_type">path</parameter>
>              <!-- Nested roles: 0 means no nesting (default), 1 means one
> sublevel, etc. -->
>  <parameter name="nested_roles_maxdepth">0</parameter>
>              <!-- Can be "off", "write" and "full" -->
>  <parameter name="sequential-mode">full</parameter>
>              <!-- "false" lets all read-only methods be executed outside of
> transactions -->
>  <parameter name="all-methods-in-transactions">true</parameter>
>              <!-- Setting this to true will force Slide to internally
> convert the username a user
>                   enters at login to lowercase. This is useful for users who
> can't be bothered
>                   with turning off their capslock key before logging in. -->
>  <parameter name="force-lowercase-login">false</parameter>
>  </configuration>
>  <data>
>  <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/">
>                  <!-- Subject can be:
>                  any user             "all"
>                  authenticated user   "authenticated"
>                  unauthenticated user "unauthenticated"
>                  self                 "self"
>                  owner of resource    "owner"
>                  a user               "/users/john"
>                  a role               "/roles/admin"
>                  -->
>  <permission action="all" subject="/roles/root" inheritable="true"/>
>  <permission action="/actions/read-acl" subject="all" inheritable="true"
> negative="true"/>
>  <permission action="/actions/write-acl" subject="all" inheritable="true"
> negative="true"/>
>  <permission action="/actions/unlock" subject="all" inheritable="true"
> negative="true"/>
>  <permission action="/actions/read" subject="all" inheritable="true"/>
>  <!-- db store -->
>  <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/db">
>  <permission action="all" subject="unauthenticated" inheritable="true"/>
>                      <!--
>                      <permission action="/actions/write"
> subject="/roles/user" inheritable="true"/>
>                      <permission action="/actions/read-acl" subject="owner"
> inheritable="true"/>
>                      -->
>  </objectnode>
>                  <!-- /users -->
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/users">
>  <permission action="all" subject="self" inheritable="true"/>
>  <permission action="all" subject="/roles/projector" inheritable="true"/>
>  <permission action="all" subject="unauthenticated" inheritable="true"
> negative="true"/>
>                      <!-- /users/root represents the administrator -->
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/users/root">
>  <revision>
>  <property namespace="http://jakarta.apache.org/slide/"
> name="password">root</property>
>  </revision>
>  </objectnode>
>                      <!-- /users/john and /users/john2 represent
> authenticated users -->
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/users/john">
>  <revision>
>  <property namespace="http://jakarta.apache.org/slide/"
> name="password">john</property>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/users/john2">
>  <revision>
>  <property namespace="http://jakarta.apache.org/slide/"
> name="password">john2</property>
>  </revision>
>  </objectnode>
>                      <!-- /users/guest represents an authenticated or
> unauthenticated guest user -->
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/users/guest">
>  <revision>
>  <property namespace="http://jakarta.apache.org/slide/"
> name="password">guest</property>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/users/projector">
>  <revision>
>  <property namespace="http://jakarta.apache.org/slide/"
> name="password">projector</property>
>  </revision>
>  </objectnode>
>  </objectnode>
>                  <!-- /roles -->
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/roles">
>  <permission action="all" subject="self" inheritable="true"/>
>  <permission action="all" subject="/roles/projector" inheritable="true"/>
>  <permission action="all" subject="unauthenticated" inheritable="true"
> negative="true"/>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/roles/root">
>  <revision>
>  <property name="group-member-set"><![CDATA[<D:href
> xmlns:D='DAV:'>/users/root</D:href>]]></property>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/roles/user">
>  <revision>
>  <property name="group-member-set"><![CDATA[<D:href
> xmlns:D='DAV:'>/users/john</D:href><D:href
> xmlns:D='DAV:'>/users/john2</D:href><D:href
> xmlns:D='DAV:'>/users/root</D:href><D:href
> xmlns:D='DAV:'>/users/projector</D:href>]]></property>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/roles/guest">
>  <revision>
>  <property name="group-member-set"><![CDATA[<D:href
> xmlns:D='DAV:'>/users/guest</D:href>]]></property>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/roles/projector">
>  <revision>
>  <property name="group-member-set"><![CDATA[<D:href
> xmlns:D='DAV:'>/users/root</D:href><D:href
> xmlns:D='DAV:'>/users/projector</D:href>]]></property>
>  </revision>
>  </objectnode>
>  </objectnode>
>                  <!-- action -->
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions">
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions/read">
>  <revision>
>  <property name="privilege-member-set"><![CDATA[<D:href
> xmlns:D='DAV:'>/actions/read-acl</D:href> <D:href
> xmlns:D='DAV:'>/actions/read-current-user-privilege-set</D:href>]]></property>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions/read-acl">
>  <revision>
>  <property name="privilege-member-set"/>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions/read-current-user-privilege-set">
>  <revision>
>  <property name="privilege-member-set"/>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions/write">
>  <revision>
>  <property name="privilege-member-set"><![CDATA[<D:href
> xmlns:D='DAV:'>/actions/write-acl</D:href> <D:href
> xmlns:D='DAV:'>/actions/write-properties</D:href> <D:href
> xmlns:D='DAV:'>/actions/write-content</D:href>]]></property>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions/write-acl">
>  <revision>
>  <property name="privilege-member-set"/>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions/write-properties">
>  <revision>
>  <property name="privilege-member-set"/>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions/write-content">
>  <revision>
>  <property name="privilege-member-set"><![CDATA[<D:href
> xmlns:D='DAV:'>/actions/bind</D:href> <D:href
> xmlns:D='DAV:'>/actions/unbind</D:href>]]></property>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions/bind">
>  <revision>
>  <property name="privilege-member-set"/>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions/unbind">
>  <revision>
>  <property name="privilege-member-set"/>
>  </revision>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.ActionNode"
> uri="/actions/unlock">
>  <revision>
>  <property name="privilege-member-set"/>
>  </revision>
>  </objectnode>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/files">
>  <permission action="all" subject="unauthenticated" inheritable="true"/>
>  <permission action="/actions/write" subject="/roles/user"
> inheritable="true"/>
>  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/projector">
>  <permission action="all" subject="unauthenticated" inheritable="true"/>
>  <permission action="/actions/write" subject="/roles/projector"
> inheritable="true"/>
>  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/projector/work"></objectnode>
>  </objectnode>
>                  <!-- DeltaV: default history and workspace paths -->
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/history">
>  <permission action="all" subject="unauthenticated" inheritable="true"/>
>  <permission action="/actions/write" subject="/roles/user"
> inheritable="true"/>
>  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/workspace">
>  <permission action="all" subject="unauthenticated" inheritable="true"/>
>  <permission action="/actions/write" subject="/roles/user"
> inheritable="true"/>
>  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
>  </objectnode>
>  <objectnode classname="org.apache.slide.structure.SubjectNode"
> uri="/workingresource">
>  <permission action="all" subject="unauthenticated" inheritable="true"/>
>  <permission action="/actions/write" subject="/roles/user"
> inheritable="true"/>
>  <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
>  </objectnode>
>  </objectnode>
>  </data>
>  </namespace>
>      <!--
>      DeltaV global parameters
>      ========================
>      * historypath (mandatory=no, default="/history"):
>      Specifies a Slide path which determines the location where this DeltaV
>      server stores history data.
>  
>      * workspacepath (mandatory=no, default="/workspace"):
>      Specifies a Slide path which determines the location where this DeltaV
>      server allows workspaces to reside.
>  
>      * workingresourcepath (mandatory=no, default="/workingresource"):
>      Specifies a Slide path which determines the location where this DeltaV
>      server stores working resources.
>  
>      * auto-version (mandatory=no, default="checkout-checkin"):
>      Controls the DeltaV auto-version behaviour.
>  
>      * auto-version-control (mandatory=no, default="false"):
>      Indicates if a resource just created by a PUT should be set under
>      version-control.
>  
>      * versioncontrol-exclude (mandatory=no, default=""):
>      Specifies a Slide path which determines resources which are excluded
> from version-control.
>      The default value "" makes no path being excluded.
>  
>      * checkout-fork (mandatory=no, default="forbidden"):
>      Controls the DeltaV check-out behaviour when a version is already
>      checked-out or has a successor.
>  
>      * checkin-fork (mandatory=no, default="forbidden"):
>      Controls the DeltaV check-out behaviour when a version has already a
>      successor.
>  
>      * standardLivePropertiesClass (mandatory=no,
>     
> default="org.apache.slide.webdav.util.resourcekind.AbstractResourceKind"):
>      Determines the "agent" knowing about what the standard live properties
> are.
>      It should be a loadable class containing the following static methods:
>      - boolean isLiveProperty(String propName)
>      - boolean isProtectedProperty(String propName)
>      - boolean isComputedProperty(String propName)
>      - Set getAllLiveProperties()
>      - Set getAllProtectedProperties()
>      - Set getAllComputedProperties()
>  
>      * uriRedirectorClass (mandatory=no,
>      default="org.apache.slide.webdav.util.DeltavUriRedirector"):
>      Determines the URI redirector class. The DeltaV URI redirector is in
>      charge of the following redirections:
>      - version URI to history URI, e.g. /history/2/1.4 to /history/2
>      - latest revision number for history resource to 0.0
>      - latest revision number for version resource to last URI token,
>      e.g. /history/2/1.4 to 1.4
>      It should be a loadable class containing the following static methods:
>      - String redirectUri(String uri)
>      - NodeRevisionNumber redirectLatestRevisionNumber(String uri)
>      -->
>  <parameter name="historypath">/history</parameter>
>  <parameter name="workspacepath">/workspace</parameter>
>  <parameter name="workingresourcepath">/workingresource</parameter>
>  <parameter name="auto-version">checkout-checkin</parameter>
>  <parameter name="auto-version-control">false</parameter>
>  <parameter name="versioncontrol-exclude"/>
>  <parameter name="checkout-fork">forbidden</parameter>
>  <parameter name="checkin-fork">forbidden</parameter>
>  
>  
>      <!-- Extractor configuration -->
>  <extractors>
>  <extractor classname="org.apache.slide.extractor.SimpleXmlExtractor"
> uri="/files/articles/test.xml">
>  <configuration>
>  <instruction property="title" xpath="/article/title/text()" />
>  <instruction property="summary" xpath="/article/summary/text()" />
>  </configuration>
>  </extractor>
>  <extractor classname="org.apache.slide.extractor.OfficeExtractor"
> uri="/files/docs/">
>  <configuration>
>  <instruction property="author" id="SummaryInformation-0-4" />
>  <instruction property="application" id="SummaryInformation-0-18" />
>  </configuration>
>  </extractor>
>  </extractors>
>  
>      <!-- Event configuration -->
>  <events>
>  <event classname="org.apache.slide.webdav.event.WebdavEvent" enable="true"
> />
>  <event classname="org.apache.slide.event.ContentEvent" enable="true" />
>  <event classname="org.apache.slide.event.ContentEvent" method="retrieve"
> enable="false" />
>  <event classname="org.apache.slide.event.EventCollection" enable="true" />
>  <event classname="org.apache.slide.event.TransactionEvent" enable="true" />
>  
>  <event classname="org.apache.slide.event.MacroEvent" enable="true"/>
>  
>          <!--listener classname="org.apache.slide.util.event.EventLogger"
> /-->
>  <listener classname="org.apache.slide.event.VetoableEventCollector" />
>  <listener classname="org.apache.slide.event.TransientEventCollector" />
>  <listener classname="org.apache.slide.webdav.event.NotificationTrigger">
>  <configuration>
>  <notification include-events="false" />
>  <persist-subscriptions filename="subscriptions.xml" />
>  </configuration>
>  </listener>
>  <listener classname="org.apache.slide.extractor.PropertyExtractorTrigger"
> />
>  <listener classname="org.apache.slide.search.IndexTrigger">
>  <configuration>
>  <indexer classname="org.apache.slide.search.LoggingIndexer"
> synchronous="false" uri="/files/articles" />
>  </configuration>
>  </listener>
>          
>  <!-- Uncomment for cluster support. Be sure to local-host and
> repository-host -->
>  <!--
>  <listener classname="org.apache.slide.cluster.ClusterCacheRefresher">
>  <configuration>
>  <node local-host="local.host.domain"
>        local-port="4444"
>    repository-host="remote.host.domain"
>    repository-port="8080"
>    repository-protocol="http"
>    username="root"
>    password="root"
>    base-uri="/files/"
>  />
>  </configuration>
>  </listener>
>  -->
>  
>  <listener classname="org.apache.slide.macro.MacroPropertyUpdater">
>            <!-- Listener that updates some properties if resources are 
>                 copied or moved.  This requires MacroEvents enabled (at 
>                 least methods copy and move) -->
>  <configuration>
>  <update-displayname>true</update-displayname>
>  <update-owner-on-move>false</update-owner-on-move>
>  <update-owner-on-copy>true</update-owner-on-copy>
>  </configuration>
>  </listener>
>  </events>
>  </slide>
>  
>  Stack Trace:
>  ==========
>  
>  19 Nov 2004 15:55:05 - org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter
> - ERROR - SQL error 1205 on /db/load_test/user_3: Deadlock found when trying
> to get lock; Try restarting transaction,  message from server: "Lock wait
> timeout exceeded; Try restarting transaction"
>  java.sql.SQLException: Deadlock found when trying to get lock; Try
> restarting transaction,  message from server: "Lock wait timeout exceeded;
> Try restarting transaction"
>          at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
>          at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
>          at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
>          at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
>          at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
>          at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
>          at
> org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
>          at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:1345)
>          at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
>          at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
>          at
> org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
>          at
> org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
>          at
> org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
>          at
> org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
>          at
> org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
>          at
> org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
>          at
> org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
>          at
> org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
>          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:462)
>          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:117)
>          at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>          at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>          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.processConnection(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)
>  org.apache.slide.common.ServiceAccessException: Service
> org.apache.slide.store.impl.rdbms.JDBCStore@2bfdff access error : Deadlock
> found when trying to get lock; Try restarting transaction,  message from
> server: "Lock wait timeout exceeded; Try restarting transaction"
>          at
> org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
>          at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
>          at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
>          at
> org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
>          at
> org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
>          at
> org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
>          at
> org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
>          at
> org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
>          at
> org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
>          at
> org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
>          at
> org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
>          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:462)
>          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:117)
>          at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>          at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>          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.processConnection(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)
>  http-8080-Processor11, 19-Nov-2004 15:52:31, unauthenticated, PUT, 500
> "Internal Server Error", 153875 ms, /db/load_test/user_3/dummy_1100908351664
>  
>  
>  
>  -Mirko
> 
> 
>  
>  
>  On Fri, 2004-11-19 at 16:17, Oliver Zeigermann wrote: 
>  Make sure you have <parameter name="sequential-mode">full</parameter>
> <parameter name="all-methods-in-transactions">true</parameter> in the
> configuration sections of Domain.xml which is default for Slide 2.1b2. I
> have run concurrent tests with 20 threads all writing to the same collection
> resp. to different ones. One problems.... Oliver On Sat, 20 Nov 2004
> 01:05:54 +0100, Oliver Zeigermann <ol...@gmail.com> wrote: >
> Please send your Domain.xml and the stack traces of said exceptions. > You
> said your were using 2.1b2? > > Oliver 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Mirko Froehlich <mf...@digitalchocolate.com>.
Yes, I'm using 2.1b2. I have copied my domain.xml below. It does have
the two parameters you mentioned. One thing I should mention is that I
disabled caching, because I really wanted to simulate the effect of
iterating over new content without the effects of caching. My domain.xml
defines both a text and a JDBC store, but the JDBC store is the one I'm
using for this test. I have also included one of the stack traces below.


Domain.xml:
=========

<?xml version="1.0"?>
<slide>
	<namespace name="slide">
		<definition>
			<store name="tx">
				<!-- cache settings (added by mirko) -->
				<parameter name="cache-mode">off</parameter>
				<parameter name="enable-content-caching">false</parameter>
				<parameter name="content-cache-size">1000</parameter>
				<parameter name="object-cache-size">1000</parameter>
				
				<parameter name="tlock-timeout">120</parameter>
				<nodestore
classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
					<parameter
name="rootpath">/usr/local/jakarta-slide/repository/store/metadata</parameter>
					<parameter
name="workpath">/usr/local/jakarta-slide/repository/work/metadata</parameter>
					<parameter name="defer-saving">true</parameter>
					<parameter name="timeout">120</parameter>
				</nodestore>
				<sequencestore
classname="org.apache.slide.store.txfile.FileSequenceStore">
					<parameter
name="rootpath">/usr/local/jakarta-slide/repository/store/sequence</parameter>
				</sequencestore>
				<securitystore>
					<reference store="nodestore"/>
				</securitystore>
				<lockstore>
					<reference store="nodestore"/>
				</lockstore>
				<revisiondescriptorsstore>
					<reference store="nodestore"/>
				</revisiondescriptorsstore>
				<revisiondescriptorstore>
					<reference store="nodestore"/>
				</revisiondescriptorstore>
				<contentstore
classname="org.apache.slide.store.txfile.TxFileContentStore">
					<parameter
name="rootpath">/usr/local/jakarta-slide/repository/store/content</parameter>
					<parameter
name="workpath">/usr/local/jakarta-slide/repository/work/content</parameter>
					<parameter name="defer-saving">true</parameter>
					<parameter name="timeout">120</parameter>
				</contentstore>
                <!-- uncomment if you want to use the sample Indexer -->
                <!-- be sure to have Lucene in your
classpath             -->
                <!--
                <contentindexer
classname="org.apache.slide.index.SampleTxtContainsIndexer">
                <parameter name="indexpath">./index</parameter>
                </contentindexer>
        -->
			</store>
			<store name="db">
				<!-- cache settings (added by mirko) -->
				<parameter name="cache-mode">off</parameter>
				<parameter name="enable-content-caching">false</parameter>
				<parameter name="content-cache-size">1000</parameter>
				<parameter name="object-cache-size">1000</parameter>

				<nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
					<parameter
name="adapter">org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter</parameter>
					<parameter name="driver">com.mysql.jdbc.Driver</parameter>
					<parameter name="url">jdbc:mysql://localhost/slide</parameter>
					<parameter name="user">slide</parameter>
					<parameter name="password">slide</parameter>
					<parameter name="dbcpPooling">true</parameter>
					<parameter name="maxPooledConnections">30</parameter>
					<parameter name="isolation">SERIALIZABLE</parameter>
					<parameter name="compress">false</parameter>
				</nodestore>
				<contentstore>
					<reference store="nodestore" />
				</contentstore>
				<securitystore>
					<reference store="nodestore" />
				</securitystore>
				<lockstore>
					<reference store="nodestore" />
				</lockstore>
				<revisiondescriptorsstore>
					<reference store="nodestore" />
				</revisiondescriptorsstore>
				<revisiondescriptorstore>
					<reference store="nodestore" />
				</revisiondescriptorstore>
			</store>
			<scope match="/" store="tx"/>
			<scope match="/db" store="db"/>
		</definition>
		<configuration>
            <!-- Actions mapping -->
			<read-object>/actions/read</read-object>
			<create-object>/actions/write</create-object>
			<remove-object>/actions/write</remove-object>
			<grant-permission>/actions/write-acl</grant-permission>
			<revoke-permission>/actions/write-acl</revoke-permission>
			<read-permissions>/actions/read-acl</read-permissions>
			<read-own-permissions>/actions/read-current-user-privilege-set</read-own-permissions>
			<lock-object>/actions/write</lock-object>
			<kill-lock>/actions/unlock</kill-lock>
			<read-locks>/actions/read</read-locks>
			<read-revision-metadata>/actions/read</read-revision-metadata>
			<create-revision-metadata>/actions/write-properties</create-revision-metadata>
			<modify-revision-metadata>/actions/write-properties</modify-revision-metadata>
			<remove-revision-metadata>/actions/write-properties</remove-revision-metadata>
			<read-revision-content>/actions/read</read-revision-content>
			<create-revision-content>/actions/write-content</create-revision-content>
			<modify-revision-content>/actions/write-content</modify-revision-content>
			<remove-revision-content>/actions/write-content</remove-revision-content>
			<bind-member>/actions/bind</bind-member>
			<unbind-member>/actions/unbind</unbind-member>
            <!-- Paths configuration -->
			<userspath>/users</userspath>
			<rolespath>/roles</rolespath>
			<actionspath>/actions</actionspath>
			<filespath>/files</filespath>
			<parameter name="dav">true</parameter>
			<parameter name="standalone">true</parameter>
			<parameter name="acl_inheritance_type">path</parameter>
            <!-- Nested roles: 0 means no nesting (default), 1 means one
sublevel, etc. -->
			<parameter name="nested_roles_maxdepth">0</parameter>
            <!-- Can be "off", "write" and "full" -->
			<parameter name="sequential-mode">full</parameter>
            <!-- "false" lets all read-only methods be executed outside
of transactions -->
			<parameter name="all-methods-in-transactions">true</parameter>
            <!-- Setting this to true will force Slide to internally
convert the username a user
                 enters at login to lowercase. This is useful for users
who can't be bothered
                 with turning off their capslock key before logging in.
-->
			<parameter name="force-lowercase-login">false</parameter>
		</configuration>
		<data>
			<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/">
                <!-- Subject can be:
                any user             "all"
                authenticated user   "authenticated"
                unauthenticated user "unauthenticated"
                self                 "self"
                owner of resource    "owner"
                a user               "/users/john"
                a role               "/roles/admin"
                -->
				<permission action="all" subject="/roles/root" inheritable="true"/>
				<permission action="/actions/read-acl" subject="all"
inheritable="true" negative="true"/>
				<permission action="/actions/write-acl" subject="all"
inheritable="true" negative="true"/>
				<permission action="/actions/unlock" subject="all"
inheritable="true" negative="true"/>
				<permission action="/actions/read" subject="all"
inheritable="true"/>
				<!-- db store -->
				<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/db">
					<permission action="all" subject="unauthenticated"
inheritable="true"/>
                    <!--
                    <permission action="/actions/write"
subject="/roles/user" inheritable="true"/>
                    <permission action="/actions/read-acl"
subject="owner" inheritable="true"/>
                    -->
				</objectnode>
                <!-- /users -->
				<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/users">
					<permission action="all" subject="self" inheritable="true"/>
					<permission action="all" subject="/roles/projector"
inheritable="true"/>
					<permission action="all" subject="unauthenticated"
inheritable="true" negative="true"/>
                    <!-- /users/root represents the administrator -->
					<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/users/root">
						<revision>
							<property namespace="http://jakarta.apache.org/slide/"
name="password">root</property>
						</revision>
					</objectnode>
                    <!-- /users/john and /users/john2 represent
authenticated users -->
					<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/users/john">
						<revision>
							<property namespace="http://jakarta.apache.org/slide/"
name="password">john</property>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/users/john2">
						<revision>
							<property namespace="http://jakarta.apache.org/slide/"
name="password">john2</property>
						</revision>
					</objectnode>
                    <!-- /users/guest represents an authenticated or
unauthenticated guest user -->
					<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/users/guest">
						<revision>
							<property namespace="http://jakarta.apache.org/slide/"
name="password">guest</property>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/users/projector">
						<revision>
							<property namespace="http://jakarta.apache.org/slide/"
name="password">projector</property>
						</revision>
					</objectnode>
				</objectnode>
                <!-- /roles -->
				<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/roles">
					<permission action="all" subject="self" inheritable="true"/>
					<permission action="all" subject="/roles/projector"
inheritable="true"/>
					<permission action="all" subject="unauthenticated"
inheritable="true" negative="true"/>
					<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/roles/root">
						<revision>
							<property name="group-member-set"><![CDATA[<D:href
xmlns:D='DAV:'>/users/root</D:href>]]></property>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/roles/user">
						<revision>
							<property name="group-member-set"><![CDATA[<D:href
xmlns:D='DAV:'>/users/john</D:href><D:href
xmlns:D='DAV:'>/users/john2</D:href><D:href
xmlns:D='DAV:'>/users/root</D:href><D:href
xmlns:D='DAV:'>/users/projector</D:href>]]></property>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/roles/guest">
						<revision>
							<property name="group-member-set"><![CDATA[<D:href
xmlns:D='DAV:'>/users/guest</D:href>]]></property>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/roles/projector">
						<revision>
							<property name="group-member-set"><![CDATA[<D:href
xmlns:D='DAV:'>/users/root</D:href><D:href
xmlns:D='DAV:'>/users/projector</D:href>]]></property>
						</revision>
					</objectnode>
				</objectnode>
                <!-- action -->
				<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions">
					<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions/read">
						<revision>
							<property name="privilege-member-set"><![CDATA[<D:href
xmlns:D='DAV:'>/actions/read-acl</D:href> <D:href
xmlns:D='DAV:'>/actions/read-current-user-privilege-set</D:href>]]></property>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions/read-acl">
						<revision>
							<property name="privilege-member-set"/>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions/read-current-user-privilege-set">
						<revision>
							<property name="privilege-member-set"/>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions/write">
						<revision>
							<property name="privilege-member-set"><![CDATA[<D:href
xmlns:D='DAV:'>/actions/write-acl</D:href> <D:href
xmlns:D='DAV:'>/actions/write-properties</D:href> <D:href
xmlns:D='DAV:'>/actions/write-content</D:href>]]></property>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions/write-acl">
						<revision>
							<property name="privilege-member-set"/>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions/write-properties">
						<revision>
							<property name="privilege-member-set"/>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions/write-content">
						<revision>
							<property name="privilege-member-set"><![CDATA[<D:href
xmlns:D='DAV:'>/actions/bind</D:href> <D:href
xmlns:D='DAV:'>/actions/unbind</D:href>]]></property>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions/bind">
						<revision>
							<property name="privilege-member-set"/>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions/unbind">
						<revision>
							<property name="privilege-member-set"/>
						</revision>
					</objectnode>
					<objectnode classname="org.apache.slide.structure.ActionNode"
uri="/actions/unlock">
						<revision>
							<property name="privilege-member-set"/>
						</revision>
					</objectnode>
				</objectnode>
				<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/files">
					<permission action="all" subject="unauthenticated"
inheritable="true"/>
					<permission action="/actions/write" subject="/roles/user"
inheritable="true"/>
					<permission action="/actions/read-acl" subject="owner"
inheritable="true"/>
				</objectnode>
				<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/projector">
					<permission action="all" subject="unauthenticated"
inheritable="true"/>
					<permission action="/actions/write" subject="/roles/projector"
inheritable="true"/>
					<permission action="/actions/read-acl" subject="owner"
inheritable="true"/>
					<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/projector/work"></objectnode>
				</objectnode>
                <!-- DeltaV: default history and workspace paths -->
				<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/history">
					<permission action="all" subject="unauthenticated"
inheritable="true"/>
					<permission action="/actions/write" subject="/roles/user"
inheritable="true"/>
					<permission action="/actions/read-acl" subject="owner"
inheritable="true"/>
				</objectnode>
				<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/workspace">
					<permission action="all" subject="unauthenticated"
inheritable="true"/>
					<permission action="/actions/write" subject="/roles/user"
inheritable="true"/>
					<permission action="/actions/read-acl" subject="owner"
inheritable="true"/>
				</objectnode>
				<objectnode classname="org.apache.slide.structure.SubjectNode"
uri="/workingresource">
					<permission action="all" subject="unauthenticated"
inheritable="true"/>
					<permission action="/actions/write" subject="/roles/user"
inheritable="true"/>
					<permission action="/actions/read-acl" subject="owner"
inheritable="true"/>
				</objectnode>
			</objectnode>
		</data>
	</namespace>
    <!--
    DeltaV global parameters
    ========================
    * historypath (mandatory=no, default="/history"):
    Specifies a Slide path which determines the location where this
DeltaV
    server stores history data.

    * workspacepath (mandatory=no, default="/workspace"):
    Specifies a Slide path which determines the location where this
DeltaV
    server allows workspaces to reside.

    * workingresourcepath (mandatory=no, default="/workingresource"):
    Specifies a Slide path which determines the location where this
DeltaV
    server stores working resources.

    * auto-version (mandatory=no, default="checkout-checkin"):
    Controls the DeltaV auto-version behaviour.

    * auto-version-control (mandatory=no, default="false"):
    Indicates if a resource just created by a PUT should be set under
    version-control.

    * versioncontrol-exclude (mandatory=no, default=""):
    Specifies a Slide path which determines resources which are excluded
from version-control.
    The default value "" makes no path being excluded.

    * checkout-fork (mandatory=no, default="forbidden"):
    Controls the DeltaV check-out behaviour when a version is already
    checked-out or has a successor.

    * checkin-fork (mandatory=no, default="forbidden"):
    Controls the DeltaV check-out behaviour when a version has already a
    successor.

    * standardLivePropertiesClass (mandatory=no,
   
default="org.apache.slide.webdav.util.resourcekind.AbstractResourceKind"):
    Determines the "agent" knowing about what the standard live
properties are.
    It should be a loadable class containing the following static
methods:
    - boolean isLiveProperty(String propName)
    - boolean isProtectedProperty(String propName)
    - boolean isComputedProperty(String propName)
    - Set getAllLiveProperties()
    - Set getAllProtectedProperties()
    - Set getAllComputedProperties()

    * uriRedirectorClass (mandatory=no,
    default="org.apache.slide.webdav.util.DeltavUriRedirector"):
    Determines the URI redirector class. The DeltaV URI redirector is in
    charge of the following redirections:
    - version URI to history URI, e.g. /history/2/1.4 to /history/2
    - latest revision number for history resource to 0.0
    - latest revision number for version resource to last URI token,
    e.g. /history/2/1.4 to 1.4
    It should be a loadable class containing the following static
methods:
    - String redirectUri(String uri)
    - NodeRevisionNumber redirectLatestRevisionNumber(String uri)
    -->
	<parameter name="historypath">/history</parameter>
	<parameter name="workspacepath">/workspace</parameter>
	<parameter name="workingresourcepath">/workingresource</parameter>
	<parameter name="auto-version">checkout-checkin</parameter>
	<parameter name="auto-version-control">false</parameter>
	<parameter name="versioncontrol-exclude"/>
	<parameter name="checkout-fork">forbidden</parameter>
	<parameter name="checkin-fork">forbidden</parameter>


    <!-- Extractor configuration -->
	<extractors>
		<extractor classname="org.apache.slide.extractor.SimpleXmlExtractor"
uri="/files/articles/test.xml">
			<configuration>
				<instruction property="title" xpath="/article/title/text()" />
				<instruction property="summary" xpath="/article/summary/text()" />
			</configuration>
		</extractor>
		<extractor classname="org.apache.slide.extractor.OfficeExtractor"
uri="/files/docs/">
			<configuration>
				<instruction property="author" id="SummaryInformation-0-4" />
				<instruction property="application" id="SummaryInformation-0-18" />
			</configuration>
		</extractor>
	</extractors>

    <!-- Event configuration -->
	<events>
		<event classname="org.apache.slide.webdav.event.WebdavEvent"
enable="true" />
		<event classname="org.apache.slide.event.ContentEvent" enable="true"
/>
		<event classname="org.apache.slide.event.ContentEvent"
method="retrieve" enable="false" />
		<event classname="org.apache.slide.event.EventCollection"
enable="true" />
		<event classname="org.apache.slide.event.TransactionEvent"
enable="true" />
		
		<event classname="org.apache.slide.event.MacroEvent" enable="true"/>

        <!--listener classname="org.apache.slide.util.event.EventLogger"
/-->
		<listener classname="org.apache.slide.event.VetoableEventCollector" />
		<listener classname="org.apache.slide.event.TransientEventCollector"
/>
		<listener
classname="org.apache.slide.webdav.event.NotificationTrigger">
			<configuration>
				<notification include-events="false" />
				<persist-subscriptions filename="subscriptions.xml" />
			</configuration>
		</listener>
		<listener
classname="org.apache.slide.extractor.PropertyExtractorTrigger" />
		<listener classname="org.apache.slide.search.IndexTrigger">
			<configuration>
				<indexer classname="org.apache.slide.search.LoggingIndexer"
synchronous="false" uri="/files/articles" />
			</configuration>
		</listener>
        
		<!-- Uncomment for cluster support. Be sure to local-host and
repository-host -->
		<!--
		<listener classname="org.apache.slide.cluster.ClusterCacheRefresher">
			<configuration>
				<node local-host="local.host.domain"
				      local-port="4444"
					  repository-host="remote.host.domain"
					  repository-port="8080"
					  repository-protocol="http"
					  username="root"
					  password="root"
					  base-uri="/files/"
				/>
			</configuration>
		</listener>
		-->
		
		<listener classname="org.apache.slide.macro.MacroPropertyUpdater">
          <!-- Listener that updates some properties if resources are 
               copied or moved.  This requires MacroEvents enabled (at 
               least methods copy and move) -->
			<configuration>
				<update-displayname>true</update-displayname>
				<update-owner-on-move>false</update-owner-on-move>
				<update-owner-on-copy>true</update-owner-on-copy>
			</configuration>
		</listener>
	</events>
</slide>

Stack Trace:
==========

19 Nov 2004 15:55:05 -
org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter - ERROR - SQL error
1205 on /db/load_test/user_3: Deadlock found when trying to get lock;
Try restarting transaction,  message from server: "Lock wait timeout
exceeded; Try restarting transaction"
java.sql.SQLException: Deadlock found when trying to get lock; Try
restarting transaction,  message from server: "Lock wait timeout
exceeded; Try restarting transaction"
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
        at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
        at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:1345)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
        at
org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
        at
org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
        at
org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
        at
org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
        at
org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
        at
org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
        at
org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
        at
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)
org.apache.slide.common.ServiceAccessException: Service
org.apache.slide.store.impl.rdbms.JDBCStore@2bfdff access error :
Deadlock found when trying to get lock; Try restarting transaction, 
message from server: "Lock wait timeout exceeded; Try restarting
transaction"
        at
org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
        at
org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:431)
        at
org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
        at
org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
        at
org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
        at
org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
        at
org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:299)
        at
org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
        at
org.apache.slide.webdav.WebdavServlet.service(WebdavServlet.java:164)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)
http-8080-Processor11, 19-Nov-2004 15:52:31, unauthenticated, PUT, 500
"Internal Server Error", 153875 ms,
/db/load_test/user_3/dummy_1100908351664



-Mirko


On Fri, 2004-11-19 at 16:17, Oliver Zeigermann wrote:

> Make sure you have
> 
>             <parameter name="sequential-mode">full</parameter>
>             <parameter name="all-methods-in-transactions">true</parameter>
> 
> 
> in the configuration sections of Domain.xml which is default for Slide
> 2.1b2. I have run concurrent tests with 20 threads all writing to the
> same collection resp. to different ones. One problems....
> 
> Oliver
> 
> On Sat, 20 Nov 2004 01:05:54 +0100, Oliver Zeigermann
> <ol...@gmail.com> wrote:
> > Please send your Domain.xml and the stack traces of said exceptions.
> > You said your were using 2.1b2?
> > 
> > Oliver



Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
Make sure you have

            <parameter name="sequential-mode">full</parameter>
            <parameter name="all-methods-in-transactions">true</parameter>


in the configuration sections of Domain.xml which is default for Slide
2.1b2. I have run concurrent tests with 20 threads all writing to the
same collection resp. to different ones. One problems....

Oliver

On Sat, 20 Nov 2004 01:05:54 +0100, Oliver Zeigermann
<ol...@gmail.com> wrote:
> Please send your Domain.xml and the stack traces of said exceptions.
> You said your were using 2.1b2?
> 
> Oliver
> 
> 
> 
> 
> On Fri, 19 Nov 2004 15:59:22 -0800, Mirko Froehlich
> <mf...@digitalchocolate.com> wrote:
> > I did some basic JMeter concurrency testing to validate if Slide meets
> > our concurrency requirements. Unfortunately, the results were not very
> > promising.
> >
> > As I mentioned, we are planning on using Slide as a repository for
> > application data. We expect to have a few hundred concurrent users of
> > our application who would be reading from as well as (although less
> > frequently) writing to the repository. In case it matters, most of the
> > read and write access would be to a dedicated folder per user, rather
> > than a shared folder. I realize that this use case is probably very
> > different from the way most people use Slide, which I assume is mostly
> > for web publishing.
> >
> > My test mainly consists of a JSP page that uses the WebDAV client
> > library to access a folder, iterate over the 10 contained documents and
> > retrieve their contents (about 2k each), and create a new document,
> > retrieve it, and then delete it. I have 100 different folders, all
> > populated with the same 10 documents. My JMeter test consists of 5
> > concurrent threads that each access a different one of the 100 folders,
> > with 800ms between requests. After only a few seconds, Slide completely
> > deadlocks with various exceptions to that effect in the Tomcat logs.
> >
> > I have tried increasing my JDBC store's MySQL connection pool from 10 to
> > 30, without any improvements. It seems like creating documents is
> > responsible for the deadlocks, as the test behaved fine when it was
> > limited to read-only access.
> >
> > Can anyone think of a way for me to tune the system in order to prevent
> > the deadlocks from occurring?
> >
> > -Mirko
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
Please send your Domain.xml and the stack traces of said exceptions.
You said your were using 2.1b2?

Oliver


On Fri, 19 Nov 2004 15:59:22 -0800, Mirko Froehlich
<mf...@digitalchocolate.com> wrote:
> I did some basic JMeter concurrency testing to validate if Slide meets
> our concurrency requirements. Unfortunately, the results were not very
> promising.
> 
> As I mentioned, we are planning on using Slide as a repository for
> application data. We expect to have a few hundred concurrent users of
> our application who would be reading from as well as (although less
> frequently) writing to the repository. In case it matters, most of the
> read and write access would be to a dedicated folder per user, rather
> than a shared folder. I realize that this use case is probably very
> different from the way most people use Slide, which I assume is mostly
> for web publishing.
> 
> My test mainly consists of a JSP page that uses the WebDAV client
> library to access a folder, iterate over the 10 contained documents and
> retrieve their contents (about 2k each), and create a new document,
> retrieve it, and then delete it. I have 100 different folders, all
> populated with the same 10 documents. My JMeter test consists of 5
> concurrent threads that each access a different one of the 100 folders,
> with 800ms between requests. After only a few seconds, Slide completely
> deadlocks with various exceptions to that effect in the Tomcat logs.
> 
> I have tried increasing my JDBC store's MySQL connection pool from 10 to
> 30, without any improvements. It seems like creating documents is
> responsible for the deadlocks, as the test behaved fine when it was
> limited to read-only access.
> 
> Can anyone think of a way for me to tune the system in order to prevent
> the deadlocks from occurring?
> 
> -Mirko
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
So, you say you have good results with the tx file stores? And even
good ones with caching turned on and MySQL? Hmmm. I had a second look
at the exceptions and the original message is that a lock has timed
out, not that there is a deadlock. This is what the JDBC driver seems
to add.

Now, one thing I know for sure is when load on the db server is very
high connections / transactions can time out resulting in these sorts
of errors which are displayed in your traces. Same thing when you try
to acquire a connection from your db server when there are no more
available. That's why it is important to have at most the number of
connections in your pool you have configured in your db.

Maybe the bug I fixed was not related to your problem at all, but just
caused by too high load? One thing I can recommand is to lower the
isolation level to READ_COMMITTED as the WebDAV layer does very
restrictive concurrency checking.

Concerning the testsuite: It will need parameters. Try running
something like functional.bat or look into it to find out what is done
there.

Oliver

On Wed, 24 Nov 2004 11:21:58 -0800, Mirko Froehlich
<mf...@digitalchocolate.com> wrote:
> Unfortunately I am still getting deadlocks with the latest code from the
> release branch. I think my initial tests were a little too aggressive,
> as I was generating more requests than the server could actually handle.
> I have now adjusted my tests to closely match the realistic throughput
> that I can achieve, and I'm getting good results using the tx store. The
> db store still isn't happy. I still get an XAException, preceded by
> HeuristicMixedException, IllegalStateException, all of which result in a
> WebdavException (Internal server error), as well as occasional
> SQLException and ServiceAccessException that mention deadlocks - see
> below.
> 
> Could someone help me get the test suite running? I'll try to reproduce
> the problem that way, which might simplify things. I've been able to
> compile the test suite, but am not sure how to configure and invoke it,
> as I always get a success message when I run the TProcessor, even when
> my Slide server is down...
> 
> -Mirko
> 
> Exceptions:
> =========
> 
> 24 Nov 2004 11:10:57 - org.apache.slide.transaction.SlideTransaction -
> WARNING - Enlist failure: Resource manager
> org.apache.slide.store.impl.rdbms.JDBCStore@180cb01 Error code XAER_NOTA
> in Transaction 168 xid http-8080-Processor15-1101323457477-168- in
> thread http-8080-Processor15
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 51 ms, /db/load_test/user_12/foobar_7.txt
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 39 ms, /db/load_test/user_12/foobar_6.txt
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 42 ms, /db/load_test/user_12/foobar_5.txt
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 65 ms, /db/load_test/user_12/foobar_4.txt
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 56 ms, /db/load_test/user_12/foobar_3.txt
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 163 ms, /db/load_test/user_12/foobar_2.txt
> 24 Nov 2004 11:10:58 - org.apache.slide.transaction.SlideTransaction -
> WARNING - Commit failure: Resource manager
> org.apache.slide.store.impl.rdbms.JDBCStore@180cb01 Error code XAER_NOTA
> in Transaction 168 xid http-8080-Processor15-1101323457477-168- in
> thread http-8080-Processor15
> 
> 
> javax.transaction.xa.XAException
>         at
> org.apache.commons.transaction.util.xa.AbstractXAResource.commit(AbstractXAResource.java:69)
>         at
> org.apache.slide.transaction.SlideTransaction.commit(SlideTransaction.java:300)
>         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:388)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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)
> 24 Nov 2004 11:10: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:388)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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:388)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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:409)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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)
> 24 Nov 2004 11:10:58 - 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:404)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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)
> http-8080-Processor15, 24-Nov-2004 11:10:57, unauthenticated, PROPFIND,
> 500 "Internal Server Error", 727 ms, /db/load_test/user_13/
> 
> Deadlock:
> 
> 24 Nov 2004 11:11:55 -
> org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter - ERROR - SQL error
> 1205 on /db/l
> oad_test/user_0: Deadlock found when trying to get lock; Try restarting
> 
> 
> transaction,  message from server: "
> Lock wait timeout exceeded; Try restarting transaction"
> java.sql.SQLException: Deadlock found when trying to get lock; Try
> restarting transaction,  message from ser
> ver: "Lock wait timeout exceeded; Try restarting transaction"
>         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
>         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
>         at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
>         at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
>         at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
>         at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
>         at
> org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.jav
> a:101)
>         at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:134
> 5)
>         at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
>         at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
>         at
> org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:429)
> 
> 
>         at
> org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
>         at
> org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
>         at
> org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
>         at
> org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
>         at
> org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:298)
>         at
> org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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)
> org.apache.slide.common.ServiceAccessException: Service
> org.apache.slide.store.impl.rdbms.JDBCStore@180cb01
> access error : Deadlock found when trying to get lock; Try restarting
> transaction,  message from server: "Lo
> ck wait timeout exceeded; Try restarting transaction"
>         at
> org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
>         at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
>         at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
>         at
> org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:429)
> 
> 
>         at
> org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
>         at
> org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
>         at
> org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
>         at
> org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
>         at
> org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:298)
>         at
> org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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)
> http-8080-Processor18, 24-Nov-2004 11:11:04, unauthenticated, PUT, 500
> "Internal Server Error", 51116 ms, /d
> b/load_test/user_0/dummy_1101323464421
> 
> 
> 
> 
> On Wed, 2004-11-24 at 03:45, Oliver Zeigermann wrote:
> 
> > Inside security code I have found an additional request which was done
> > outside of the transaction which explains why the locking in the
> > WebDAV layer failed: different transactions inside the same requests
> > where blocking each other. Now everything should be done in one and a
> > single request.
> >
> > The new testcase passes now, Mirko, would you do us all the favor and
> > check out the latest sources either from release or head branch and
> > see if your test case succeeds as well? If not please supply stack
> > traces and hints how to use your JMeter tests.
> >
> > Thanks,
> >
> > Oliver
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Mirko Froehlich <mf...@digitalchocolate.com>.
This is probably no surprise, but once I enable caching (as we would in
production), everything works fine. My test case consists of about 90%
read-only access and 10% read/write access, which should reflect our
expected usage patterns.

-Mirko


On Wed, 2004-11-24 at 11:21, Mirko Froehlich wrote:

> Unfortunately I am still getting deadlocks with the latest code from
> the release branch. I think my initial tests were a little too
> aggressive, as I was generating more requests than the server could
> actually handle. I have now adjusted my tests to closely match the
> realistic throughput that I can achieve, and I'm getting good results
> using the tx store. The db store still isn't happy. I still get an
> XAException, preceded by HeuristicMixedException,
> IllegalStateException, all of which result in a WebdavException
> (Internal server error), as well as occasional SQLException and
> ServiceAccessException that mention deadlocks - see below.
> 
> Could someone help me get the test suite running? I'll try to
> reproduce the problem that way, which might simplify things. I've been
> able to compile the test suite, but am not sure how to configure and
> invoke it, as I always get a success message when I run the
> TProcessor, even when my Slide server is down...
> 
> -Mirko
> 
> Exceptions:
> =========
> 
> 24 Nov 2004 11:10:57 - org.apache.slide.transaction.SlideTransaction -
> WARNING - Enlist failure: Resource manager
> org.apache.slide.store.impl.rdbms.JDBCStore@180cb01 Error code
> XAER_NOTA in Transaction 168 xid
> http-8080-Processor15-1101323457477-168- in thread
> http-8080-Processor15
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 51 ms, /db/load_test/user_12/foobar_7.txt
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 39 ms, /db/load_test/user_12/foobar_6.txt
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 42 ms, /db/load_test/user_12/foobar_5.txt
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 65 ms, /db/load_test/user_12/foobar_4.txt
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 56 ms, /db/load_test/user_12/foobar_3.txt
> http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
> "OK", 163 ms, /db/load_test/user_12/foobar_2.txt
> 24 Nov 2004 11:10:58 - org.apache.slide.transaction.SlideTransaction -
> WARNING - Commit failure: Resource manager
> org.apache.slide.store.impl.rdbms.JDBCStore@180cb01 Error code
> XAER_NOTA in Transaction 168 xid
> http-8080-Processor15-1101323457477-168- in thread
> http-8080-Processor15
> javax.transaction.xa.XAException
>         at
> org.apache.commons.transaction.util.xa.AbstractXAResource.commit(AbstractXAResource.java:69)
>         at
> org.apache.slide.transaction.SlideTransaction.commit(SlideTransaction.java:300)
>         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:388)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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)
> 24 Nov 2004 11:10: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:388)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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:388)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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:409)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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)
> 24 Nov 2004 11:10:58 - 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:404)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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)
> http-8080-Processor15, 24-Nov-2004 11:10:57, unauthenticated,
> PROPFIND, 500 "Internal Server Error", 727 ms, /db/load_test/user_13/
> 
> 
> Deadlock:
> 
> 24 Nov 2004 11:11:55 -
> org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter - ERROR - SQL
> error 1205 on /db/l
> oad_test/user_0: Deadlock found when trying to get lock; Try
> restarting transaction,  message from server: "
> Lock wait timeout exceeded; Try restarting transaction"
> java.sql.SQLException: Deadlock found when trying to get lock; Try
> restarting transaction,  message from ser
> ver: "Lock wait timeout exceeded; Try restarting transaction"
>         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
>         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
>         at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
>         at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
>         at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
>         at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
>         at
> org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.jav
> a:101)
>         at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:134
> 5)
>         at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
>         at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
>         at
> org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:429)
>         at
> org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
>         at
> org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
>         at
> org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
>         at
> org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
>         at
> org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:298)
>         at
> org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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)
> org.apache.slide.common.ServiceAccessException: Service
> org.apache.slide.store.impl.rdbms.JDBCStore@180cb01
> access error : Deadlock found when trying to get lock; Try restarting
> transaction,  message from server: "Lo
> ck wait timeout exceeded; Try restarting transaction"
>         at
> org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
>         at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
>         at
> org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
>         at
> org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:429)
>         at
> org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
>         at
> org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
>         at
> org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
>         at
> org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
>         at
> org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:298)
>         at
> org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
>         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:462)
>         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:117)
>         at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
>         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.processConnection(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)
> http-8080-Processor18, 24-Nov-2004 11:11:04, unauthenticated, PUT, 500
> "Internal Server Error", 51116 ms, /d
> b/load_test/user_0/dummy_1101323464421
> 
> 
> 
> 
> On Wed, 2004-11-24 at 03:45, Oliver Zeigermann wrote: 
> 
> > Inside security code I have found an additional request which was done
> > outside of the transaction which explains why the locking in the
> > WebDAV layer failed: different transactions inside the same requests
> > where blocking each other. Now everything should be done in one and a
> > single request.
> > 
> > The new testcase passes now, Mirko, would you do us all the favor and
> > check out the latest sources either from release or head branch and
> > see if your test case succeeds as well? If not please supply stack
> > traces and hints how to use your JMeter tests.
> > 
> > Thanks,
> > 
> > Oliver
> 
> 

Re: major deadlock issues (JDBC store with MySQL)

Posted by Mirko Froehlich <mf...@digitalchocolate.com>.
Unfortunately I am still getting deadlocks with the latest code from the
release branch. I think my initial tests were a little too aggressive,
as I was generating more requests than the server could actually handle.
I have now adjusted my tests to closely match the realistic throughput
that I can achieve, and I'm getting good results using the tx store. The
db store still isn't happy. I still get an XAException, preceded by
HeuristicMixedException, IllegalStateException, all of which result in a
WebdavException (Internal server error), as well as occasional
SQLException and ServiceAccessException that mention deadlocks - see
below.

Could someone help me get the test suite running? I'll try to reproduce
the problem that way, which might simplify things. I've been able to
compile the test suite, but am not sure how to configure and invoke it,
as I always get a success message when I run the TProcessor, even when
my Slide server is down...

-Mirko

Exceptions:
=========

24 Nov 2004 11:10:57 - org.apache.slide.transaction.SlideTransaction -
WARNING - Enlist failure: Resource manager
org.apache.slide.store.impl.rdbms.JDBCStore@180cb01 Error code XAER_NOTA
in Transaction 168 xid http-8080-Processor15-1101323457477-168- in
thread http-8080-Processor15
http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
"OK", 51 ms, /db/load_test/user_12/foobar_7.txt
http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
"OK", 39 ms, /db/load_test/user_12/foobar_6.txt
http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
"OK", 42 ms, /db/load_test/user_12/foobar_5.txt
http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
"OK", 65 ms, /db/load_test/user_12/foobar_4.txt
http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
"OK", 56 ms, /db/load_test/user_12/foobar_3.txt
http-8080-Processor16, 24-Nov-2004 11:10:57, unauthenticated, GET, 200
"OK", 163 ms, /db/load_test/user_12/foobar_2.txt
24 Nov 2004 11:10:58 - org.apache.slide.transaction.SlideTransaction -
WARNING - Commit failure: Resource manager
org.apache.slide.store.impl.rdbms.JDBCStore@180cb01 Error code XAER_NOTA
in Transaction 168 xid http-8080-Processor15-1101323457477-168- in
thread http-8080-Processor15
javax.transaction.xa.XAException
        at
org.apache.commons.transaction.util.xa.AbstractXAResource.commit(AbstractXAResource.java:69)
        at
org.apache.slide.transaction.SlideTransaction.commit(SlideTransaction.java:300)
        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:388)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)
24 Nov 2004 11:10: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:388)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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:388)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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:409)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)
24 Nov 2004 11:10:58 - 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:404)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)
http-8080-Processor15, 24-Nov-2004 11:10:57, unauthenticated, PROPFIND,
500 "Internal Server Error", 727 ms, /db/load_test/user_13/


Deadlock:

24 Nov 2004 11:11:55 -
org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter - ERROR - SQL error
1205 on /db/l
oad_test/user_0: Deadlock found when trying to get lock; Try restarting
transaction,  message from server: "
Lock wait timeout exceeded; Try restarting transaction"
java.sql.SQLException: Deadlock found when trying to get lock; Try
restarting transaction,  message from ser
ver: "Lock wait timeout exceeded; Try restarting transaction"
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1905)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1109)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1203)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2090)
        at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680)
        at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.jav
a:101)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.clearBinding(StandardRDBMSAdapter.java:134
5)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:133)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
        at
org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:429)
        at
org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
        at
org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
        at
org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
        at
org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
        at
org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:298)
        at
org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)
org.apache.slide.common.ServiceAccessException: Service
org.apache.slide.store.impl.rdbms.JDBCStore@180cb01
access error : Deadlock found when trying to get lock; Try restarting
transaction,  message from server: "Lo
ck wait timeout exceeded; Try restarting transaction"
        at
org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:66)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:191)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:89)
        at
org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.storeObject(AbstractRDBMSStore.java:429)
        at
org.apache.slide.store.AbstractStore.storeObject(AbstractStore.java:639)
        at
org.apache.slide.store.ExtendedStore.storeObject(ExtendedStore.java:590)
        at
org.apache.slide.structure.StructureImpl.store(StructureImpl.java:493)
        at
org.apache.slide.structure.StructureImpl.create(StructureImpl.java:379)
        at
org.apache.slide.webdav.method.PutMethod.executeRequest(PutMethod.java:298)
        at
org.apache.slide.webdav.method.AbstractWebdavMethod.run(AbstractWebdavMethod.java:386)
        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:462)
        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:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
        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.processConnection(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)
http-8080-Processor18, 24-Nov-2004 11:11:04, unauthenticated, PUT, 500
"Internal Server Error", 51116 ms, /d
b/load_test/user_0/dummy_1101323464421




On Wed, 2004-11-24 at 03:45, Oliver Zeigermann wrote:

> Inside security code I have found an additional request which was done
> outside of the transaction which explains why the locking in the
> WebDAV layer failed: different transactions inside the same requests
> where blocking each other. Now everything should be done in one and a
> single request.
> 
> The new testcase passes now, Mirko, would you do us all the favor and
> check out the latest sources either from release or head branch and
> see if your test case succeeds as well? If not please supply stack
> traces and hints how to use your JMeter tests.
> 
> Thanks,
> 
> Oliver



use of COMPRESS flag not detected on get...

Posted by Nick Longinow <ni...@vanhooseassociates.com>.
Hi

I notice that if you use COMPRESS=true in the store (Oracle, in my case),
and then later change it to false, any files putMethod'd into the store
while COMPRESS was true will not be able to getMethod'd.  ie, slide will
attempt to do a getMethod assuming the files are stored in the *current*
format specified in the domain.xml for the store.  ie, it will attempt to
pull them down in compressed (zip format), which will not work.

Is this the case ? If so, is there a way to tell Slide to pull the document
out in the currently stored format, not just what the domain.xml says ?
Nick


---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
Inside security code I have found an additional request which was done
outside of the transaction which explains why the locking in the
WebDAV layer failed: different transactions inside the same requests
where blocking each other. Now everything should be done in one and a
single request.

The new testcase passes now, Mirko, would you do us all the favor and
check out the latest sources either from release or head branch and
see if your test case succeeds as well? If not please supply stack
traces and hints how to use your JMeter tests.

Thanks,

Oliver


On Wed, 24 Nov 2004 00:53:01 +0100, Oliver Zeigermann
<ol...@gmail.com> wrote:
> I just could reproduce the problem with the new test case
> 
> testsuite/junit/xmltestcases/functional/extra/multi-user/getPut/getPutFolder.xml
> 
> and it also exists in the latest sources. It has got something to do
> with security and seems to be what Warwick already identified in
> 
> http://issues.apache.org/bugzilla/show_bug.cgi?id=31907
> 
> which we thought was solved, but apparently is not.
> 
> I will have a look at this ASAP.
> 
> Oliver
> 
> On Fri, 19 Nov 2004 15:59:22 -0800, Mirko Froehlich
> 
> 
> <mf...@digitalchocolate.com> wrote:
> > I did some basic JMeter concurrency testing to validate if Slide meets
> > our concurrency requirements. Unfortunately, the results were not very
> > promising.
> >
> > As I mentioned, we are planning on using Slide as a repository for
> > application data. We expect to have a few hundred concurrent users of
> > our application who would be reading from as well as (although less
> > frequently) writing to the repository. In case it matters, most of the
> > read and write access would be to a dedicated folder per user, rather
> > than a shared folder. I realize that this use case is probably very
> > different from the way most people use Slide, which I assume is mostly
> > for web publishing.
> >
> > My test mainly consists of a JSP page that uses the WebDAV client
> > library to access a folder, iterate over the 10 contained documents and
> > retrieve their contents (about 2k each), and create a new document,
> > retrieve it, and then delete it. I have 100 different folders, all
> > populated with the same 10 documents. My JMeter test consists of 5
> > concurrent threads that each access a different one of the 100 folders,
> > with 800ms between requests. After only a few seconds, Slide completely
> > deadlocks with various exceptions to that effect in the Tomcat logs.
> >
> > I have tried increasing my JDBC store's MySQL connection pool from 10 to
> > 30, without any improvements. It seems like creating documents is
> > responsible for the deadlocks, as the test behaved fine when it was
> > limited to read-only access.
> >
> > Can anyone think of a way for me to tune the system in order to prevent
> > the deadlocks from occurring?
> >
> > -Mirko
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: major deadlock issues (JDBC store with MySQL)

Posted by Oliver Zeigermann <ol...@gmail.com>.
I just could reproduce the problem with the new test case

testsuite/junit/xmltestcases/functional/extra/multi-user/getPut/getPutFolder.xml

and it also exists in the latest sources. It has got something to do
with security and seems to be what Warwick already identified in

http://issues.apache.org/bugzilla/show_bug.cgi?id=31907

which we thought was solved, but apparently is not.

I will have a look at this ASAP.

Oliver

On Fri, 19 Nov 2004 15:59:22 -0800, Mirko Froehlich
<mf...@digitalchocolate.com> wrote:
> I did some basic JMeter concurrency testing to validate if Slide meets
> our concurrency requirements. Unfortunately, the results were not very
> promising.
> 
> As I mentioned, we are planning on using Slide as a repository for
> application data. We expect to have a few hundred concurrent users of
> our application who would be reading from as well as (although less
> frequently) writing to the repository. In case it matters, most of the
> read and write access would be to a dedicated folder per user, rather
> than a shared folder. I realize that this use case is probably very
> different from the way most people use Slide, which I assume is mostly
> for web publishing.
> 
> My test mainly consists of a JSP page that uses the WebDAV client
> library to access a folder, iterate over the 10 contained documents and
> retrieve their contents (about 2k each), and create a new document,
> retrieve it, and then delete it. I have 100 different folders, all
> populated with the same 10 documents. My JMeter test consists of 5
> concurrent threads that each access a different one of the 100 folders,
> with 800ms between requests. After only a few seconds, Slide completely
> deadlocks with various exceptions to that effect in the Tomcat logs.
> 
> I have tried increasing my JDBC store's MySQL connection pool from 10 to
> 30, without any improvements. It seems like creating documents is
> responsible for the deadlocks, as the test behaved fine when it was
> limited to read-only access.
> 
> Can anyone think of a way for me to tune the system in order to prevent
> the deadlocks from occurring?
> 
> -Mirko
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org