• unknown's avatar
    Bug#25679 · b42247bc
    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
ha_federated.h 11.9 KB