Improved building mechanism by implementing CMake's GenerateExportHeader() functionality for the MySQL Protocol library; which previously was hard coded. (Bug #31503429)
The strict 1:1 thread-to-connection ratio was replaced by an event-driven + IO-threadpool design. Instead of running blocking socket operations in a thread, non-blocking IO is now used and a thread may be used when a socket is available. This raises the concurrent connection limit by a Router instance from around 5,000 to around 50,000.
This also adds a new [io] configuration section with two new configuration options: backend that handles async operations (accepts poll or linux_epoll) and threads as the number of IO threads to handles connections (0 for all available, or 1-1024).
The bootstrap process now configures REST API functionality into the generated
mysqlrouter.confconfiguration file. The new optional
--https-portbootstrap argument defines
port; which is defined as 8443 by default.
To disable the REST API configuration from being generated, pass in the new
Added systemd notify support. If there is a NOTIFY_SOCKET environment variable set when the Router starts, Router treats its value as unix-domain socket name; DGRAM on all unix-based operating systems and as a named pipe path on Windows.
When using the recently introduced _hidden instance feature, hiding secondary instances with _disconnect_existing_sessions_when_hidden enabled would close all secondary instances rather than only hidden instances. This issue only applied when using host names instead of IP addresses. (Bug #31665764)
Refactored acceptor-shutdown synchronization to avoid possible hangs. (Bug #31598112)
Improved Router's metadata cache refresh mechanism to account for race conditions; such as a refresh request made while the metadata is currently refreshing. (Bug #31597874)
Improved the round-robin routing strategy quarantine check mechanism. (Bug #31575084)
Added support for the net_buffer_length routing option. Previously it was accepted but ignored in favor of the default value. (Bug #31575027)
Added link-local IPv6 address support. Previously values containing a '%' sign failed with an 'invalid address' error. (Bug #31574975)
Replaced all occurrences of 'master' in the context of the node role with 'primary'. (Bug #31508256)
On Windows, added socket write support to emulate it by adding an AF_INET variant of socketpair(). (Bug #31414156)
When Router loses the primary it waits for the failover with a 10 second timeout. Previously it did not check for terminate requests, so could take up to 10 seconds if the new primary was not found until Router honored the shutdown request. (Bug #31397127)
Hostname detection resolved IP addresses of external network interfaces using code specific to Linux that operated directly with c-style type cases. Improved portability using type safe network-address types from net::ip::tcp::address and ::network thus making it portable for Windows, Solaris, FreebBSD, and macOS. (Bug #31370876)