For Windows, MSI installer packages for MySQL Router now include a check for the required Visual Studio redistributable package, and produce a message asking the user to install it if it is missing. (Bug #30541398)
Added new log functionality:
[filelog]: this new section includes the optional
filenameoption that defaults to
[logger]'s filename value. This file is written to the
logging_folderdirectory; and the value must be a file name and not include a path.
[logger]: added an optional
filenameoption to define Router's log file name, and it also sets
[filelog]'s default filename value. It is unset by default, while default filename behavior is Router's
[consolelog]: this new section includes the optional
destinationoption that defaults to
/dev/stderr. Available values are
/dev/nullon *nix; and
(Bug #29271072, Bug #94095)
Added support for the InnoDB cluster metadata "tags" property; namely for the "_hidden" and "_disconnect_existing_sessions_when_hidden" tags.
_hidden: A boolean that indicates if the node should be hidden. Setting "true" makes the node hidden, while "false" or any other value considers it not hidden. Default: false.
_disconnect_existing_sessions_when_hidden: A boolean that indicates if the existing connections to the node should be dropped in case the node is hidden. A value of "false" means the node is "dont_disconnect_existing", meaning existing connections to hidden nodes are not disconnected. True or any other value means the opposite. Default: true.
This setting does not affect new client connections, which are never directed to hidden instances.
Hidden instances only affect user connections; the instance remains available to Router when performing tasks such as fetching metadata and calculating the quorum.
Updated mock_server MySQL Server type definitions; fixed NEWDECIMAL and added TIMESTAMP2 and JSON. (Bug #31283079, Bug #99416)
For testing, the full protobuf dependency was replaced by protobuf-lite. (Bug #31245124)
For Windows, added log rotation support. This functionality was previously only available on Unix-based systems. (Bug #31212570)
The bootstrap process could not complete when MySQL Server had the optimizer switch derived_merge set to off; because the v2_routers view became non-insertable. Now, derived_merge is set to on for sessions that Router is handling metadata. (Bug #31170721)
Improved the plugin loading mechanism to not implicitly load plugins; previously the same plugin could be loaded twice. (Bug #31024867)
Router assumed that each new GR change notified by X Protocol notifications has a new view id, but that is not always the case; for example, for changes like switching the primary or change of the role. The view id is no longer used for notification debouncing. (Bug #31017863, Bug #98863)
Fixed MSVC 2019 16.6 builds by adding the missing headers. Thanks to Billy O'Neal for the patch. (Bug #31008906, Bug #98880)
Fixed Clang 9 warnings. (Bug #30920954)
With use_gr_notifications=1, Router used the old X Protocol namespace name (xplugin) when sending the PING message over the X Protocol connection that was sent to avoid the idle connection from being closed. (Bug #30850734)
With a high TTL and Group Replication (GR) notifications enabled, MySQL Shell operations such as addInstance() and removeInstance() would go unnoticed until the TTL expired; which would trigger GR notifications in the meantime. Now Router temporarily decreases TTL to 1s when it notices inconsistent metadata until it becomes consistent again. (Bug #30739068)
On Linux, Router now installs an example logrotate example script; it's located at
/etc/logrotate.d/mysqlrouter. (Bug #30611485)
Updated HTTP server logic to function with changes made by libevent 2.1.9.