MySQL Router Release Notes

4.1 Changes in MySQL Router 2.0.4 (2016-11-23, General Availability)

Functionality Added or Changed

  • The unused ip_from_addrinfo() function was removed. (Bug #22811176)

  • Windows support was added. Binaries are now available for download, and several Router command line options were added to configure a Windows service for MySQL Router.

    The new command line options on Windows are --install-service (service starts automatically), --install-service-manual (service can be started manually), --remove-service (removes a service), and --service (starts a service). The service name is MySQLRouter.

    For additional information about these options, see Starting MySQL Router.

Bugs Fixed

  • The RPATH for executable and shared libraries did not contain both the router library path and the router plugin library path. (Bug #24763533)

  • The RPATH was incorrect in the executable for RPM builds. The plugin_folder path cannot be set to a value not present in the executable, and the paths should be used for variable interpolation, not to control where plugins are found. The error was similar to "Error: mysql_protocol.so: cannot open shared object file: No such file or directory".

    Additionally, the INSTALL_LIBDIR was incorrectly used, which also resulted in path related errors. (Bug #24669798, Bug #24695503)

  • When writing packets read from the sender (client or server) to the receiver, if a single write() call did not write all requested data, the whole buffer was written in another attempt. Now, only the remaining part of the buffer gets written. (Bug #24578638)

  • The SO version for libmysqlharness was 0, which is usually reserved for pre-release versions. The SO version was changed to 1, so the library file name changed from libmysqlharness.so.0 to libmysqlharness.so.1. (Bug #24557123)

  • On OS X, linking Router to Fabric would fail to function by default due to linking problems. (Bug #24527866, Bug #80376)

  • The following syntax programs were not caught: defining a key in the DEFAULT section, and using option or section names that contained non-identifier characters. For example, spaces are not allowed in option names or section keys. (Bug #24372338)

  • The read-write mode (which uses the first-available mode schedule) could reconnect to the first listed server (destination) after failing to connect to all listed servers. Instead, it now always behaves as documented, which is to not reconnect after all destinations failed to connect. If a reconnection is desired, then use the read-only mode instead, which implements the round-robin schedule. (Bug #24367453)

  • Backslashes in configuration definitions, such as file paths, could escape characters. (Bug #24360999)

  • On OS X, Router could fail due to RPATH related issues. CMake now uses -DWITH_STATIC=yes for OS X when executing cmake for the binaries. (Bug #23507484)

  • When handling large data sets, such as BLOBs, the connection routing plugin would terminate the connection with a write error. This is fixed by correctly setting the socket to blocking after it was set to nonblocking when requesting a connection from a MySQL server.

    In addition, several related write calls now properly check for and report errors. (Bug #23183566)

  • When the max_connect_errors variable was set to the maximum possible value (highest boundary value of 4294967295), connection errors would report the value as a negative value, such as -1. (Bug #22745790)

  • There was inconsistent behavior with connection handling in relation to the max_connections setting. Now, the counter is incremented before the thread is spawned in the Routing plugin, because getting the server socket takes time and client connections could have been accepted after the max number of connections was reached. (Bug #22705168)

  • An exception thrown inside a plugin would cause the process to be terminated unconditionally. (Bug #22546709, Bug #79983)