You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <de...@db.apache.org> on 2006/09/09 10:20:23 UTC

[jira] Updated: (DERBY-1817) Race condition in network server's thread pool

     [ http://issues.apache.org/jira/browse/DERBY-1817?page=all ]

Knut Anders Hatlen updated DERBY-1817:
--------------------------------------

    Attachment: 1817.diff
                1817.stat

Attaching a patch for this bug. Instead of always putting new sessions in the run queue when there are free threads, the network server now compares the number of free threads and the size of the run queue. This is done to prevent the run queue from growing to a size greater than the number of free threads. Also, the server now synchronizes on runQueue until the session has been added to the queue. This is to prevent two threads from deciding that there are enough free threads and adding the session to the run queue, when there in fact only were enough free threads for one of them. With this patch, I am not able to reproduce DERBY-1757 on platforms where the failure was easily reproduced before.

The patch passes derbyall (Sun JVM 1.4.2, FreeBSD) and is ready for review. Thanks!

> Race condition in network server's thread pool
> ----------------------------------------------
>
>                 Key: DERBY-1817
>                 URL: http://issues.apache.org/jira/browse/DERBY-1817
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Server
>    Affects Versions: 10.2.1.0
>            Reporter: Knut Anders Hatlen
>         Assigned To: Knut Anders Hatlen
>         Attachments: 1817.diff, 1817.stat
>
>
> If there is a free DRDAConnThread when a client connects to the network server, the session is put into a queue from which one of the free DRDAConnThreads can pick it up. However, if another client connects after the session was put into the queue, but before the DRDAConnThread has picked it up, one might end up with more sessions in the queue than there are free threads. This can lead to hangs like the ones that we currently see in many of Ole's tests (for instance checkDataSource - http://www.multinet.no/~solberg/public/Apache/TinderBox_Derby/testlog/SunOS-5.10_i86pc-i386/440518-derbyall_diff.txt).

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira