[ 
https://issues.apache.org/jira/browse/DBCP-272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12612006#action_12612006
 ] 

adrianw edited comment on DBCP-272 at 7/9/08 4:44 AM:
--------------------------------------------------------------

This is the thread dump obtained by doing a "kill -3" on the tomcat process 
when in the stuck state soon after startup.

      was (Author: adrianw):
    This is the thread dump obtained by doing a "kill -3" on the tomcat process 
when in the stuck trace soon after startup.
  
> Contention for DriverManager when initializing multiple datasources 
> --------------------------------------------------------------------
>
>                 Key: DBCP-272
>                 URL: https://issues.apache.org/jira/browse/DBCP-272
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 1.2.2
>         Environment: Java HotSpot(TM) 64-Bit Server VM (1.6.0-b105 mixed 
> mode) on Linux
>            Reporter: Adrian Woodhead
>         Attachments: catalina.out.stuck2
>
>
> This issue has been discussed in the commons user's mailing list between 
> myself, Simon Kitching and Phil Steitz. 
> In summary:
> I have a webapp deployed in tomcat containing 3 pooled datasources which are 
> managed by Spring. The webapp starts up OK and is immediately hit by a load 
> of a few hundred requests a second. It seems to handle a few hundred request 
> and then just locks up entirely and stops responding entirely. Attached is a 
> stack trace obtained by doing kill -3 when in this state. After discussion on 
> the mailing list I changed the datasources to be non-lazy initialised in 
> spring but the issue still occurs. 
> Simon Kitching said:
> "The first thread is trying to initialise a postgresql driver and register it 
> with DriverManager. The driver registration is being triggered from a static 
> initialiser block on the postgresql driver class, so is executing from within 
> the Class.forName method (and therefore the postgresql driver Class object is 
> locked by this thread).
> The second thread is trying to initialise a mysql driver and register it with 
> DriverManager. Again, the driver registration is being triggered from a 
> static initialiser block on the mysql driver class, so the mysql driver Class 
> object is locked by this thread).
> But in both cases, the DriverManager needs to be initialised before anything 
> can be registered. The first thread appears to have run first, triggering the 
> initialisation process, and the second thread is blocked waiting for 
> initialisation of DriverManager to complete before it registers the mysql 
> driver. 
> <snip/>
> Possibly dbcp should call DriverManager.getDrivers() internally on startup to 
> avoid this race... "

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to