-
unknown authored
"Federated Denial of Service" Federated storage engine used to attempt to open connections within the ::create() and ::open() methods which are invoked while LOCK_open mutex is being held by mysqld. As a result, no other client sessions can open tables while Federated is attempting to open a connection. Long DNS lookup times would stall mysqld's operation and a rogue connection string which connects to a remote server which simply stalls during handshake can stall mysqld for a much longer period of time. This patch moves the opening of the connection much later, when the federated actually issues queries, by which time the LOCK_open mutex is no longer being held. mysql-test/r/federated.result: change of test/results due to patch for bug25679 mysql-test/t/federated.test: change of test/results due to patch for bug25679 sql/ha_federated.cc: bug25679 remove function check_foreign_fata_source() ha_federated::open() no longer opens the federated connection. ha_federated::create() no longer opens and tests connection. ha_federated::real_connect() opens connection and tests presence of table. ha_federated::real_query() sends query, calling real_connect() if neccessary. sql/ha_federated.h: bug25679 new methods real_query() and real_connect()
b42247bc