[
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.