Re: Choosing between multiple namespace and multiple stores

2004-12-08 Thread Mirko Froehlich
I asked the same question a little while ago. It sounds like the
advantages of using one configuration over the other are not entirely
clear. Multiple stores are much easier to configure than multiple
namespaces, so I would probably go with this configuration. I suppose
that using multiple namespaces might give you more control if you want
these namespaces to behave very differently (e.g. with regards to
versioning, permissions, etc.), but then again I don't really know.

-Mirko


On Wed, 2004-12-08 at 00:00, Ritu Kedia wrote:

 Could someone please point out the pros and cons of using multiple
 namespaces vs multiple stores. I have a requirement of configuring multiple
 slide stores in a single App Instance. Each store will be used by a
 different set of people.
 I would also like to know if there are known issues with either
 configuration and which one would be more performant and stable.
 
 Thanks,
 Ritu
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


Re: Exceptions on MySQL 4.1

2004-12-07 Thread Mirko Froehlich
Absolutely! I'll let you know how it goes. Again, thanks for
implementing these fixes.

-Mirko


On Tue, 2004-12-07 at 09:18, Oliver Zeigermann wrote:

 OK, this should work for MySQL now. 
 
 Mirko, do you still have enough patience to try it with the latest CVS head?
 
 Oliver
 
 On Tue, 7 Dec 2004 15:40:15 +0100, Oliver Zeigermann
 [EMAIL PROTECTED] wrote:
  As a final hint: set isolation level to read committed!
  
  Oliver
  
  P.S.: Thanks for reporting all this; I am currently working on the
  deadlock retry thing...
  
  On Mon, 06 Dec 2004 17:02:56 -0800, Mirko Froehlich
  
  
  [EMAIL PROTECTED] wrote:
   In that case, I don't think this will solve my issue. Slide actually
   started up fine with MySQL 4.1 for the first time, using the
   MySql41RDBMSAdapter and the new schema. I ran my concurrency test, which
   again failed after less than a minute. Only subsequent startups failed
   due to the schema issues, for some reason.
  
  
  
   -Mirko
  
   On Mon, 2004-12-06 at 16:47, Oliver Zeigermann wrote:
  
Nono, use the MySql41RDBMSAdapter. That's what worked for me.
   
Oliver
   
   
On Mon, 06 Dec 2004 16:37:36 -0800, Mirko Froehlich
[EMAIL PROTECTED] wrote:
  In that case, should I continue to use the MySqlRDBMSAdapter, or 
 should I
 use the MySql41RDBMSAdapter?

  -Mirko




  On Mon, 2004-12-06 at 16:25, Oliver Zeigermann wrote:
  May be true, I did my tests with the 4.0 schema and it worked just 
 fine. No
 idea what the original problem is. Anyway, use the 4.0 schema even 
 for 4.1
 and it should work. Oliver

   
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
   
  
  
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


propfind using webdavclient and mod_dav

2004-12-07 Thread Mirko Froehlich
I ran into a weird issue using the WebDAV client API as well as the
command line tool to access an Apache mod_dav based WebDAV repository.
When I create a WebdavResource for a particular path and enumerate the
child resources using listWebdavResources() or getChildResources(), it
only returns the folder itself, not its children. The command line tool
displays the same behavior.

When I explicitly use a PropfindMethod with a depth of 1, it works fine.
Any ideas?

-Mirko



Re: Exceptions on MySQL 4.1

2004-12-06 Thread Mirko Froehlich
In that case, should I continue to use the MySqlRDBMSAdapter, or should
I use the MySql41RDBMSAdapter?

-Mirko


On Mon, 2004-12-06 at 16:25, Oliver Zeigermann wrote:

 May be true, I did my tests with the 4.0 schema and it worked just
 fine. No idea what the original problem is. Anyway, use the 4.0 schema
 even for 4.1 and it should work.
 
 Oliver




Re: Exceptions on MySQL 4.1

2004-12-06 Thread Mirko Froehlich
In that case, I don't think this will solve my issue. Slide actually
started up fine with MySQL 4.1 for the first time, using the
MySql41RDBMSAdapter and the new schema. I ran my concurrency test, which
again failed after less than a minute. Only subsequent startups failed
due to the schema issues, for some reason.

-Mirko


On Mon, 2004-12-06 at 16:47, Oliver Zeigermann wrote:

 Nono, use the MySql41RDBMSAdapter. That's what worked for me.
 
 Oliver
 
 
 On Mon, 06 Dec 2004 16:37:36 -0800, Mirko Froehlich
 [EMAIL PROTECTED] wrote:
   In that case, should I continue to use the MySqlRDBMSAdapter, or should I
  use the MySql41RDBMSAdapter?
   
   -Mirko
  
  
   
   
   On Mon, 2004-12-06 at 16:25, Oliver Zeigermann wrote: 
   May be true, I did my tests with the 4.0 schema and it worked just fine. No
  idea what the original problem is. Anyway, use the 4.0 schema even for 4.1
  and it should work. Oliver 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


main branch vs. 2.1 release branch

2004-12-03 Thread Mirko Froehlich
How stable would you consider the Slide main branch at this point? What
are some of the significant differences between this and 2.1?

I am still doing my concurrency testing, and unfortunately I think I
spoke too soon when I said that everything runs fine with caching
enabled. I still get deadlocks under Slide 2.1. Sometimes it deadlocks
very soon, other times it takes about 1 hour or so. For some reason, I
no longer get stacktraces in the Tomcat logs.

Initial testing using the main branch from CVS suggests that this
version might be more stable, as I have yet to run into this deadlock
problem. But of course I am concerned about actually running with a
development release. I'd appreciate any thoughts on this.

-Mirko



Re: main branch vs. 2.1 release branch

2004-12-03 Thread Mirko Froehlich
Thanks for the suggestion, I will definitely try that. Do you know which
particular improvements in MySQL 4.1 would have made a difference?

When you say it worked for you, which specific issue did it resolve?

-Mirko


On Fri, 2004-12-03 at 16:02, Oliver Zeigermann wrote:

 I would try upgrading to MySQL 4.1. It worked fine for me.
 
 Oliver
 
 
 On Fri, 03 Dec 2004 13:34:41 -0800, Mirko Froehlich
 [EMAIL PROTECTED] wrote:
  How stable would you consider the Slide main branch at this point? What
  are some of the significant differences between this and 2.1?
  
  I am still doing my concurrency testing, and unfortunately I think I
  spoke too soon when I said that everything runs fine with caching
  enabled. I still get deadlocks under Slide 2.1. Sometimes it deadlocks
  very soon, other times it takes about 1 hour or so. For some reason, I
  no longer get stacktraces in the Tomcat logs.
  
  Initial testing using the main branch from CVS suggests that this
  version might be more stable, as I have yet to run into this deadlock
  problem. But of course I am concerned about actually running with a
  development release. I'd appreciate any thoughts on this.
  
  -Mirko
  
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


Re: Performance

2004-11-29 Thread Mirko Froehlich
This might sound obvious, but is there any way you can distribute your
content across a hierarchy of folders?

I have not experimented with this scenario in Slide, but I have worked
with similar content repositories before, and having many (i.e. several
thousand) documents in a folder is usually very problematic. In addition
to the actual repository efficiency that suffers, there are often UI
scalability issues (e.g. if the documents get displayed on a web page,
you might need to implement pagination, etc.).

-Mirko


On Mon, 2004-11-29 at 09:49, Dirk Ehms wrote:

 Hi,
 
 I have put 2000 file resources in one WebDav collection. When I request
 a list of all resources (PROPFIND) I have to wait between 30 and 40
 seconds until I get a response. At the moment I use
 TxXMLFileDescriptorsStore. Using a database is even slower. Has anybody
 a suggestion how to get the response a bit faster?
 
 Regards
 Dirk.
 
 
 
 
 Virus checked by G DATA AntiVirusKit
 Version: AVK 15.0.1261 from 29.11.2004
 Virus news: www.antiviruslab.com
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


Re: major deadlock issues (JDBC store with MySQL)

2004-11-24 Thread Mirko Froehlich
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
 [EMAIL PROTECTED] 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
 [EMAIL PROTECTED] 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

Re: publishing workflow / best practices

2004-11-24 Thread Mirko Froehlich
It sounds like writing a client tool to migrate content from one Slide
server to another one might be a good option. This should be fairly
simple to write using the Webdav client library. Another option that I
originally had in mind is to simply perform a database dump on the
staging server and upload this to production. Of course, this would
preserve the entire version history, which we most likely won't care
about on our production server, so a separate tool might be more
appropriate.

-Mirko


On Wed, 2004-11-24 at 13:58, Richard Emberson wrote:

 I must preface my remarks by stating that our Slide deployment will use
 a database for storage.
 
 Consider Slide namespaces. From what I've heard and based upon the
 mailing list traffic, multi Slide namespace installations do not
 occur very often. Lets say that such installations work just fine,
 - each namespace could use a different database -
 one would need some external Slide/webdav tool/script to promote
 (copy) directories from dev namespace to test namespace to production
 namespace.
 Since one has to create and use such a promotion tool, its not clear
 that having a single Slide with three namespaces buys one anything
 over having three distinct Slides each with their own DB.
 I am assuming that to promote a directory involves getting it (the
 whole directory hierarchy) into the (client) tool from one Slide
 server and then putting into a second Slide server.
 This is true even if one has the three Slide databases on the same
 database server; one must extract the directory from one db and
 insert it into another.
 
 Our dev Slide server will be version controlled while the test and
 production need only have non-versionable copies.
 
 
 Mirko Froehlich wrote:
  Our current staging environment really serves a different purpose. Our
  test, staging, and production servers correspond to phases in our
  software development cycle and are strictly separated. We definitely
  wouldn't want to use the production Slide server for development or test
  purposes, so those at the minimum would need to be separate servers.
  However, my example of publishing web content from staging to production
  uses a different concept of staging than we currently have, so it  may
  not be an ideal example. I suppose for this scenario the content could
  very well live in two different folders on the production Slide server,
  with a simple publishing process that copies or moves content from the
  staging to the production server. I guess in the end this really depends
  on the workflows we need. For example, for content updates on the live
  site this approach would probably work well. But lets say we develop a
  new major version of the application with significant changes to our web
  content management framework and corresponding new content in the
  repository. When this goes live, we would need to publish the content
  from the staging Slide server to the production server.
  
  I know this is somewhat hypothetical at this point. I'm just trying to
  get a feel for how people use Slide. Yours is definitely a viable
  option.
  
  -Mirko
  
  
  On Wed, 2004-11-24 at 12:58, Richard Emberson wrote:
  
  
 For my information, why would you not have top-level directories:
 dev, staging, and production; all within the same Slide server?
 
 Richard
 
 
 
 Mirko Froehlich wrote:
 
 Those of you who are using Slide in a production environment, what kind
 of publishing workflow have you put in place?
 
 We will likely end up using Slide for various aspects of our
 application. Initially, it will mostly serve as a repository for
 user-specific application data. In this scenario, the user data would
 only live on the production server and there would not have to be a
 publishing process that moves data from staging to production. However,
 there's a good chance that we may end up using Slide for web publishing
 as well, in which case we would probably want to be able to manage
 content on the staging server and push it to production as part of a
 publishing workflow.
 
 I suppose this could be as simple as performing a database dump on
 staging and loading it on production. We would probably set up multiple
 db stores, which would allow us to publish the part of the repository
 that is used for web publishing, but not the part of the repository that
 contains the users' application data.
 
 Anyway, I would be interested in hearing about your experiences and best
 practices that you have determined for these kinds of scenarios.
 
 -Mirko
 
 
 
  
 


Re: major deadlock issues (JDBC store with MySQL)

2004-11-23 Thread Mirko Froehlich
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
[EMAIL PROTECTED] 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
[EMAIL PROTECTED] 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

Re: major deadlock issues (JDBC store with MySQL)

2004-11-23 Thread Mirko Froehlich




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




?xml version=1.0 encoding=UTF-8?
node
testelement class=org.apache.jmeter.testelement.TestPlan
testelement class=org.apache.jmeter.config.Arguments 
name=TestPlan.user_defined_variables
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=TestElement.gui_classorg.apache.jmeter.config.gui.ArgumentsPanel/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=TestElement.test_classorg.apache.jmeter.config.Arguments/property
collection class=java.util.ArrayList 
propType=org.apache.jmeter.testelement.property.CollectionProperty 
name=Arguments.arguments/
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=TestElement.nameUser Defined Variables/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.BooleanProperty 
name=TestElement.enabledtrue/property
/testelement
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=TestElement.gui_classorg.apache.jmeter.control.gui.TestPlanGui/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.BooleanProperty 
name=TestPlan.serialize_threadgroupsfalse/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=TestElement.test_classorg.apache.jmeter.testelement.TestPlan/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=TestElement.nameSlide Test/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.BooleanProperty 
name=TestPlan.functional_modefalse/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.BooleanProperty 
name=TestElement.enabledtrue/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=TestPlan.comments/
/testelement
node
testelement class=org.apache.jmeter.threads.ThreadGroup
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.LongProperty 
name=ThreadGroup.start_time1100738492000/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=TestElement.test_classorg.apache.jmeter.threads.ThreadGroup/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=ThreadGroup.delay/
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=ThreadGroup.duration/
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.BooleanProperty 
name=TestElement.enabledtrue/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=ThreadGroup.num_threads5/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.BooleanProperty 
name=ThreadGroup.schedulerfalse/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=TestElement.gui_classorg.apache.jmeter.threads.gui.ThreadGroupGui/property
testelement class=org.apache.jmeter.control.LoopController 
name=ThreadGroup.main_controller
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 
name=TestElement.gui_classorg.apache.jmeter.control.gui.LoopControlPanel/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.IntegerProperty 
name=LoopController.loops-1/property
property xml:space=preserve 
propType=org.apache.jmeter.testelement.property.StringProperty 

Re: major deadlock issues (JDBC store with MySQL)

2004-11-23 Thread Mirko Froehlich
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
 [EMAIL PROTECTED] 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: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


RE: major deadlock issues (JDBC store with MySQL)

2004-11-23 Thread Mirko Froehlich
I'm not explicitly using any transactions, unless the webdav client
library transparently uses transactions.

-Mirko


On Tue, 2004-11-23 at 16:06, Warwick Burrows wrote:

 Actually I haven't committed the latest transaction deadlock fixes I made to
 get the enlistment of slide server transactions into the client's
 transaction working. If Mirko is using client side transactions then this
 may fix it. And even if he's not it still may fix it :-) But I'm still
 waiting on a comitter account from Apache to commit this fix. What I found
 particularly interesting about the exception stack that accompanies the
 deadlock is that it is in the thread of execution for a commit which is
 exactly where this latest problem was. The defect for this problem is:
 
   http://issues.apache.org/bugzilla/show_bug.cgi?id=32250
 
 If you think the problem may be security related then this is the defect I
 opened for some other potentially problematic areas in the security impl
 that could suffer the same problem that I fixed in 31907. eg.
 
   http://issues.apache.org/bugzilla/show_bug.cgi?id=31908
 
 Though the fact that the stack indicates its occurring during the commit
 would make me think it is defect 32250.
 
 Warwick




RE: write privileges for owner

2004-11-19 Thread Mirko Froehlich
Hi Chris,

The Wiki is your best bet: http://wiki.apache.org/jakarta-slide

The following page describes how to obtain a WebdavResource:
http://wiki.apache.org/jakarta-slide/CreateWebDavResource

Once you have this, the Javadocs should help you access the repository
through the WebdavResource. One thing I found very confusing at first is
that the responsibility of the WebdavResource is not quite clear. On the
one hand, it acts as an entity that represents an actual resource
(document or folder) in the repository. Unfortunately, it also acts as a
general facade into the repository, for example by providing methods
that take a path as a parameter and act on the resource corresponding to
that path.

If you keep this in mind, you should be able to get everything done,
though.

-Mirko


On Fri, 2004-11-19 at 13:02, Chris O'Connell wrote:

 Sorry for what may be a newbie question, but can someone point me at a 
 'getting started' link.  I've downloaded the server and client and the 
 documentation and I'm trying to go through it, but I think I'm just missing 
 something real basic.  For example, I think I need to use the 
 'WebdavResource' class in my client to access my store.  But I can't figure 
 out the big picture of how to use this class.  Am I just simple?  Any help 
 would be appreciated.
 
 Thanks in advance, Chris




major deadlock issues (JDBC store with MySQL)

2004-11-19 Thread Mirko Froehlich
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: major deadlock issues (JDBC store with MySQL)

2004-11-19 Thread Mirko Froehlich
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-modeoff/parameter
parameter 
name=enable-content-cachingfalse/parameter
parameter 
name=content-cache-size1000/parameter
parameter 
name=object-cache-size1000/parameter

parameter name=tlock-timeout120/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-savingtrue/parameter
parameter 
name=timeout120/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-savingtrue/parameter
parameter 
name=timeout120/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-modeoff/parameter
parameter 
name=enable-content-cachingfalse/parameter
parameter 
name=content-cache-size1000/parameter
parameter 
name=object-cache-size1000/parameter

nodestore 
classname=org.apache.slide.store.impl.rdbms.JDBCStore
parameter
name=adapterorg.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter/parameter
parameter 
name=drivercom.mysql.jdbc.Driver/parameter
parameter 
name=urljdbc:mysql://localhost/slide/parameter
parameter name=userslide/parameter
parameter 
name=passwordslide/parameter
parameter 
name=dbcpPoolingtrue/parameter
parameter 
name=maxPooledConnections30/parameter
parameter 
name=isolationSERIALIZABLE/parameter
parameter 
name=compressfalse/parameter
/nodestore
contentstore
reference 

Re: Indexing / DASL without Lucene

2004-11-18 Thread Mirko Froehlich
Thanks for the info. Could you elaborate a little on the JDBC store?
Does it automatically take advantage of the database's indexing and
search capabilities, or do I have to configure something to enable this?

-Mirko


On Wed, 2004-11-17 at 20:42, James Mason wrote:

 Umm... yes ;).
 
 By default Slide does no indexing, but rather crawls your entire store
 for each search request. Obvious, this is horribly inefficient. If
 you're using a JDBC store you can take advantage of the database's
 capabilities for indexing, and Slide 2.2 will add a much more powerful
 indexing system with Lucene.
 
 -James
 
 On Wed, 2004-11-17 at 11:25 -0800, Mirko Froehlich wrote:
  I am slightly confused about Slide's search implementation. It appears
  that Slide supports Lucene for indexing documents. I am using a file and
  a JDBC store, neither of which defines an indexer (i.e. the
  contentindexer element is commented out in my Domain.xml). Still,
  performing a DASL search using the WebDAV client API works fine in both
  of my stores. Does Slide fall back to a default search implementation if
  no contentindexer is defined? In this case I assume that using Lucene
  would result in more efficient search queries?
  
  -Mirko
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


Re: Indexing / DASL without Lucene

2004-11-18 Thread Mirko Froehlich
Thanks, that's good to know.

For content searches, is there any way to leverage MySQL's fulltext
capabilities? Or are searches simply performed using a like clause? If
not, is it already possible in 2.1b2 to configure a JDBC/J2EE store to
use the Lucene indexer?

-Mirko


On Thu, 2004-11-18 at 11:51, Guido Casper wrote:

 Mirko Froehlich wrote:
  Thanks for the info. Could you elaborate a little on the JDBC store?
  Does it automatically take advantage of the database's indexing and
  search capabilities, or do I have to configure something to enable this?
 
 You have to configure your JDBCStore with:
parameter name=use-rdbms-expression-factorytrue/parameter
 
 Be aware that this leverages database indexes only for searches on 
 properties but not for content searches.
 
 Guido
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


Indexing / DASL without Lucene

2004-11-17 Thread Mirko Froehlich
I am slightly confused about Slide's search implementation. It appears
that Slide supports Lucene for indexing documents. I am using a file and
a JDBC store, neither of which defines an indexer (i.e. the
contentindexer element is commented out in my Domain.xml). Still,
performing a DASL search using the WebDAV client API works fine in both
of my stores. Does Slide fall back to a default search implementation if
no contentindexer is defined? In this case I assume that using Lucene
would result in more efficient search queries?

-Mirko


multiple stores vs. multiple namespaces

2004-11-17 Thread Mirko Froehlich
We will likely need to use several JDBC (or rather J2EE) stores. The
main reason is that each of these will fall under a slightly different
publishing workflow, and we want to be able to independently publish
them by copying the appropriate database from staging to production,
etc.

It seems like I could either set up multiple namespaces, with a single
store for each namespace, or I could set up a single namespace with
multiple stores. In both cases, the resulting folder hierarchy would
look the same (assuming I configure the mappings appropriately in
Domain.xml). I don't really care too much about things like access
control, as most of this will be handled by our business logic rather
than by Slide.

Which configuration would you recommend, and what are the trade-offs?

-Mirko


Re: Opinions for Exposing XML from Methods

2004-11-15 Thread Mirko Froehlich
XML support sounds very useful for debugging.

Speaking of the WebDAV client API: I have only recently started working
with Slide and the WebDAV client API, and even though the client API is
very powerful, I have to admit that I have mixed feelings about it.

In particular, the WebdavResource does not have very clearly delineated
responsibilities. It seems to act as a combination of a general facade
into the API with many convenience methods, while also trying to act as
an entity that represents a particular WebDAV resource. In my opinion,
these responsibilities should be clearly split up, so that
WebdavResource only acts as an entity and another class (maybe something
like WebdavConnection, or maybe just the WebdavSession, which
WebdavResource currently extends) could act as a more general facade
into the API if necessary.

Once created, a WebdavResource should only represent a particular folder
or document, and all operations on it should use relative paths (based
on the resource the instance represents), rather than allowing absolute
paths.

Anyway, just a side note. :)

-Mirko


On Mon, 2004-11-15 at 11:26, Tim Frank wrote:

 I have been working with the Webdav Client using the 
 org.apache.webdav.lib.methods package directly to get the XML response 
 from the slide server. I am using the XML results with XSLT to build web 
 interfaces and reports.
 
 I noticed that the WebdavResource class seems to be the powerhouse of 
 the client API, however, it does not seem to provide a way to extract 
 the XML responses in any easy way. The best I have seen is a piece of 
 code that walks through the nodelists to merely output the same XML that 
 came from the server originally. This seems to be odd when the XML is 
 available from most methods is available with getResponseDocument().
 
 As a result, I was thinking of attempting to make the XML result 
 available in the WebdavResource class for easy access to those needing 
 the DOM representation of the result. My idea would be to store it as a 
 w3c.dom variable in the class that would get set to something other than 
 a default when a method was called that returns an XML response. This 
 should also be useful for extracting error messages after methods are 
 executed.
 
 I would appreciate ideas/opinions from others who may find this useful, 
 or in some way problematic.
 
 Tim
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


Re: Seeking java example querying slide

2004-11-15 Thread Mirko Froehlich
The Wiki is pretty helpful.

This document explains how to create a WebdavResource, which represents
a folder or document in your repository:
http://wiki.apache.org/jakarta-slide/CreateWebDavResource

Once you have this, you can do all kinds of things. Like I said, if all
you wan to do is get the child resources, you can simply call
listWebdavResources() on this object, which internally uses a PROPFIND.

If you need to explicitly invoke a PROPFIND, for example in order to
return non-standard properties or to return resources that are more than
1 level below your folder, you can call one of the propFind() methods on
your WebdavResource.

Alternatively, you can also bypass the WebdavResource entirely and
manually create a PropFindMethod object with the appropriate properties.
In this case, your code will look similar to:

http://wiki.apache.org/jakarta-slide/DASLSearch

This example is for a DASL search, but the way you invoke your method
would be pretty much the same. Disregard the actual query syntax, of
course.

-Mirko


On Mon, 2004-11-15 at 11:34, Phillip Rhodes wrote:

 That solution sounds like the best way to go.  Is anyone anywhere of a 
 example program that does a PROPFIND operation?
 
 Since I am new to this, it would be hard to pull a working program just 
 using the javadocs.
 Thanks.