Changed the default ports used by Router, and default behavior depends on the
--conf-base-portis not set, then the associated
bind_portvalues begin at 6446; Classic (RW 6446, RO 6447) and X Protocol (RW 6448, RO 6449). Additionally, now setting
--conf-base-portto 0 uses the old default ports of Classic (RW 6446, RO 6447) and X Protocol (RW 64460, RO 64470).
Reason: the previous default X Protocol ports (64460 and 64470) are defined as "Dynamic Ports" as per RFC 6335.
Previously, Router bound the incoming socket at startup and kept it open even if no destinations were available. Now Router only binds to the socket if destinations are available, and otherwise closes the incoming sockets. This also means Load-Balancers know whether Router can handle traffic.
mysqlrouter.conffile in Debian Router packages did not set the run directory to an absolute path name, resulting in package installation errors. (Bug #32620788)
Disabled code-cache when compiling on Solaris to avoid 'invalid bytecode' errors; previously it was only disabled for sun-cc builds. (Bug #32567899)
When using first-available policy and static routing, it was possible that the router wouldn't start and emit an error similar to "plugin 'routing:test_default' start failed: routing:test_default: Failed setting up TCP service"; fixed race condition on start-up between 'is running' and 'start socket acceptor'. (Bug #32565479)
Fixed assertion that a previous destination list contained primary destinations after connecting to a primary node failed. This assertion was firing because the primary destinations were not properly recognized during refresh. (Bug #32543464)
Network transfers larger than the socket send buffer, such as large result sets or queries, could terminate the connection. (Bug #32543049)
Now return an std::errc::operation_would_block error code if write() blocks and no data is written; before 0 was returned. (Bug #32542170)
Configuring a second Router instance on the same machine without the
--nameparameter would yield unexpected errors related to file cleanup. (Bug #32517802)
Router would report as READY before the sockets were open; so now reports it after the socket acceptors are set up. (Bug #32429409)
Network loss before connect() was resulting in long failover times as it depended on the operating system's network timeouts. The
connect_timeoutoption was not honored, but is now applied before connecting. (Bug #32428113)
Router no longer relies upon the MySQL instance's availability logic for wait-primary-failover. Instead, it now checks the metadata-cache's replicaset info for a new Primary. This is because GR membership does not change is the network between Router and the Primary is lost. (Bug #32393421)
After a network loss between Router and a group replication PRIMARY (but not network loss between group replication members), the wait for the failover by Router did not timeout after 10 seconds, and instead the connection remained locked. (Bug #32338771)
Configuration options expecting numeric values would allow hex and octal values; but now only completely numeric values are allowed. For example,
--config-base-port=0xffnow reports an error. (Bug #32297657)
Improved the DEBUG logging mechanism to include the following information: host:port, execution time, OK/ERR information, and row count. In addition, now log one message instead of separate before/after messages. (Bug #32293818)
The REST endpoint timeout check changed from waiting for "timeout + request time" to waiting until the timeout expires. (Bug #32252500)
Connector/ODBC report ENUM columns as SQL_CHAR as the ODBC standard does not support ENUM, and MS SQL Server expects CHAR data to always be the same fixed length as specified in the column definition. This fixes errors related to new line and tab symbols present in the UNICODE version of the driver. The workaround is to enable SSPS (default) by not setting NO_SSPS=1. (Bug #28783266, Bug #92748)
References: See also: Bug #32537000.