Bug #10637 Fail connect to specified MySql Hosts
Submitted: 14 May 2005 5:49 Modified: 25 Jun 2005 20:45
Reporter: Fei Wong
Status: Closed
Category:Connector/Net Severity:S2 (Serious)
Version:1.0.4 OS:Microsoft Windows (Windows 2K/2003)
Assigned to: Reggie Burnett Target Version:

[14 May 2005 5:49] Fei Wong
Description:
StreamCreator call socket connect asynchronously by calliing beginConnect(), which uses
the system thread pool. When the client calls MySqlConnection.open() from a callback of
MSMQ for receiving message, using delegate call back as well. This causes will result in a
system thread waits for another system thread for socket connection. However, that thread
pool has already been consumed. The final result is no meaning work can be done. Most of
the connections fail to connect to MySql hosts.

How to repeat:
Use delegate's beginInvoke to call create MySqlConnection, open, read data and close
continously.

Suggested fix:
Use sychronized connect method.
[19 May 2005 9:11] Vasily Kishkin
Could you please to send any test suit of this bug for better understaning the problem.
Thanks.
[20 May 2005 13:27] Fei Wong
Test class for this bug

Attachment: Class1.cs (text/plain), 2.23 KiB.

[20 Jun 2005 1:00] Bugs System
No feedback was provided for this bug for over a month, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
[20 Jun 2005 2:38] Fei Wong
A simple test program is attached.
[20 Jun 2005 11:27] Vasily Kishkin
I was able to reproduce it. Thank for test case.
Tested on Win 2000 Sp4, Microsoft Visual C# .NET , Connector .NET 1.0.4
[24 Jun 2005 22:03] Reggie Burnett
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.

If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information 
about accessing the source trees is available at
    http://www.mysql.com/doc/en/Installing_source_tree.html

Additional info:

Thanks for this bug report.  I have reworked how the connection is handled and it no
longer uses a worker thread.
[24 Jun 2005 22:27] Reggie Burnett
The problem was that we were  using BeginConnect/EndConnect to implement connect	timeout.
Each one of these uses a worker thread from the .NET thread pool.  This thread pool only
has a default of 25 threads so on a very heavily loaded system, it's possible it could run
out.  Connect has now been recoded to not use a worker thread.

This is fixed in 1.0.5
[25 Jun 2005 20:45] Mike Hillyer
Documented in 1.0.5 changelog.