After working with Christoper Lenz (thanks), I decided to step through the
code of the JDBCDescriptorsStore and JDBCContentStore classes and analyze
the difference between the 1.1.0 version (SLIDE_1_0 branch), and the 1.0.16
release.  The problem lies in the isConnected() method of both of these
classes in the following code segment:

PreparedStatement statement =
    connection.prepareStatement(getDatabaseConnectionTestStatement());
statement.executeQuery();
statement.close();

I ran a test using the Slide client and issuing a "ls" command against the
"files" directory.  The "ls" command issues two PROPFIND requests against
the WebDav servet, first with a level 0 and second with a level 1  (I
believe).  In my test, the "files" directory had 12 child resources (all
collections).  I ran this test three consecutive times and the results are
reported below:

Current 1.1.0 Version
------------------------------
15 Sep 2002 12:03:04 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 341 ms) URI = /files/
15 Sep 2002 12:03:12 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 7150 ms) URI = /files/

15 Sep 2002 12:03:16 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 431 ms) URI = /files/
15 Sep 2002 12:03:22 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 5828 ms) URI = /files/

15 Sep 2002 12:03:30 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 450 ms) URI = /files/
15 Sep 2002 12:03:36 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 5658 ms) URI = /files/


After Commenting Out Above Code
----------------------------------------------------
16 Sep 2002 10:05:16 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 10 ms) URI = /files/
16 Sep 2002 10:05:17 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 1212 ms) URI = /files/

16 Sep 2002 10:05:20 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 10 ms) URI = /files/
16 Sep 2002 10:05:20 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 70 ms) URI = /files/

16 Sep 2002 10:05:21 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 10 ms) URI = /files/
16 Sep 2002 10:05:21 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
 207 Multi-Status (time: 70 ms) URI = /files/


Next, I decided to see why there was such an enormous decrease in
performance so I setup output code to count the number of times that these
methods were called during the course of the PROPFIND.  I only counted the
second PROPFIND request.  As it turns out, each isConnected() method was
executed 794 times!!!!  Thats quite a lot for one request.  I am not sure
why the database needs to be "pinged" with a select statement each time the
isConnected() method gets called.

Here is my test environment:
Slide 1.1.0  (downloaded on 9/9/2002)
Tomcat 4.0.4
SQL Server 2000
Merant (DataDirect) 3.0 JDBC Drivers


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

Reply via email to