Bug #55480 Rexecuting tests a second time fails
Submitted: 22 Jul 2010 13:47 Modified: 23 Jul 2010 20:02
Reporter: Dirk Helbig Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:5.x OS:Windows (server: 2008 (64-bit) / client: xp (32-bit))
Assigned to: Vladislav Vaintroub CPU Architecture:Any

[22 Jul 2010 13:47] Dirk Helbig
Description:
I start my mysql-server and all testcases of my application and everything is fine.
After a second start of the testcases all these fails!

Assembly Initialization method B2XCore.Tests.Common.AssemblyInitialize threw exception. System.Configuration.ConfigurationErrorsException:  System.Configuration.ConfigurationErrorsException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. --->  System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. --->  MySql.Data.MySqlClient.MySqlException: Host 'mysqlserver' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'. Aborting test execution.

Running all testcases on 5.4 on a local machine (64-bit) everthing works fine. Again and again...

Maybe it's an issue for remote-connections or the latest version of mysql!?

How to repeat:
I have no short test case at the moment.
Maybe you use the current branch-version of the app:
https://b2xcore.svn.sourceforge.net/svnroot/b2xcore/branches/multidatabasesupport
[22 Jul 2010 14:46] Vladislav Vaintroub
Closing as not a bug. There is nothing Connector/NET specific that would cause this error. The error is returned "as is" from remote server. it might be helpful to examine why connections have failed (e.g what was  the error returned by MySqlConnection.Open()). But until then, mysqladmin flush-hosts executed on server machine (as suggested in error text) will help to unblock a test client machine.
[23 Jul 2010 10:42] Dirk Helbig
You can see the error returned by MySqlConnection.Open() in the description!
But how can I find the cause of the problem?
I've enabled complete logging but I can't find any hint.
Maybe you can give me an advice.
[23 Jul 2010 11:00] Vladislav Vaintroub
Dirk, the error returned in description is a followup error, which happens when "many" connections from the same host have failed . Server locks the offending machine (to prevent DoS attacks).

The description of this error is given here
http://dev.mysql.com/doc/refman/5.5/en/blocked-host.html 

I myself ran onto this error trying sysbench benchmark (which connects all clients at the same time) from laptop over WLAN, using several hundred sysbench users.

I believe that in my case the error was that some clients were not able to respond to the server in a timely manner during authentication handshake. So I used mysqladmin to reenable the client machine, and reduced the number of clients.

Hope this helps.
[23 Jul 2010 20:02] Dirk Helbig
The problem was that I have made a connection-check with "TcpClient" to avoid using not existant server.
Is there a better solution to check running remote server? The preferred way in some discussion forums with "telnet" is no useful as you can see.
[23 Jul 2010 20:59] Vladislav Vaintroub
It is a question of attitude.. Instead of checking if I can connect, and then connect and do stuff, I'd just connect and do stuff (and try to proper handle errors when they arise).

But basically, you have a better chance using any type of MySQL client , e.g Connector/NET. telnet won't be able to autheniticate properly, by connecting on the MySQL port and doing nothing, it will trick server into thinking that there is a client that does not want to authenticate, and, after connection timeout this attempt will count as error.