- 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- mysqlrouter.log.
- [consolelog]: this new section includes the optional- destinationoption that defaults to- /dev/stderr. Available values are- /dev/stdout,- /dev/stderr, or- /dev/nullon *nix; and- CONor- NULon Windows.
 (Bug #29271072, Bug #94095, WL #13838) 
- 
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. (WL #13787) 
- 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 necessary internal functions to allow log rotation but it remains unsupported. This functionality is only available on Unix-based systems. (Bug #31212570, Bug #33708504) 
- 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. (WL #10703)