changelog/12.0/12.0.0/release_notes.md
This release includes the following major changes or new features.
A number of CLI commands and vttablet RPCs have been deprecated as we move from master to primary.
All functionality is backwards compatible except as noted under Incompatible Changes.
Deprecated commands and flags will be removed in the next release (13.0).
Deprecated vttablet RPCs will be removed in the subsequent release (14.0).
The newest version of the query planner, Gen4, becomes an experimental feature as part of this release.
While Gen4 has been under development for a few release cycles, we have now reached parity with its predecessor, v3.
To use Gen4, VTGate's -planner_version flag needs to be set to Gen4Fallback.
In order to support buffering during resharding cutovers in addition to primary failovers, a new implementation
of query buffering has been added.
This is considered experimental. To enable it the flag buffer_implementation should be set to keyspace_events.
The existing implementation (flag value healthcheck) will be deprecated in a future release.
A critical vulnerability CVE-2021-44228 in the Apache Log4j logging library was disclosed on Dec 9 2021.
The project provided release 2.15.0 with a patch that mitigates the impact of this CVE. It was quickly found that the initial patch was insufficient, and additional CVEs
CVE-2021-45046 and CVE-2021-44832 followed.
These have been fixed in release 2.17.1. This release of Vitess, v12.0.0, uses a version of Log4j below 2.17.1, for this reason, we encourage you to use version v12.0.3 instead, to benefit from the vulnerability patches.
An issue where the value of the -force flag is used instead of -keep_data flag's value in v2 vreplication workflows (#9174) is known to be present in this release. A workaround is available in the description of issue #9174. This issue is fixed in release >= v12.0.1.
Wherever CLI commands produced master or MASTER for tablet type, they now produce primary or PRIMARY.
Scripts and tools that depend on parsing command output will need to change.
Example:
$ vtctlclient -server localhost:15999 ListAllTablets
zone1-0000000100 sourcekeyspace 0 primary 192.168.0.134:15100 192.168.0.134:17100 [] 2021-09-24T01:12:00Z
zone1-0000000101 sourcekeyspace 0 rdonly 192.168.0.134:15101 192.168.0.134:17101 [] <null>
zone1-0000000102 sourcekeyspace 0 replica 192.168.0.134:15102 192.168.0.134:17102 [] <null>
zone1-0000000103 sourcekeyspace 0 rdonly 192.168.0.134:15103 192.168.0.134:17103 [] <null>
Use of reserved connections is controlled by the vtgate flag -enable_system_settings. This flag has in the past defaulted to false (or OFF) in release versions (i.e. x.0 and x.0.y) of Vitess, and to true (or ON) in development versions.
From Vitess 12.0.0 onwards, it defaults to true in all release and development versions. You can read more about this here. Hence you should specify this flag explicitly, so that you are sure whether it is enabled or not, regardless of which Vitess release/build/version you are running.
If you have reserved connections disabled, you will get the old Vitess behavior: where most system settings (e.g. sql_mode) are just silently ignored by Vitess. In situations where you know your backend MySQL defaults are acceptable, this may be the correct setting to ensure the best possible performance of the vttablet <-> MySQL connection pools. This comes down to a trade-off between compatibility and performance/scalability. You should also review this section of the documentation when deciding whether or not to enable reserved connections.
VExec is deprecated and removed. All Online DDL commands should be run through OnlineDDL.
OnlineDDL revert is deprecated. Use REVERT VITESS_MIGRATION '...' SQL command either via ApplySchema or via vtgate.
InitShardMaster is deprecated, use InitShardPrimary instead.
SetShardIsMasterServing is deprecated, use SetShardIsPrimaryServing instead.
Various command flags have been deprecated and new variants provided.
DeleteTablet flag allow_master replaced with allow_primaryPlannedReparentShard flag avoid_master replaced with avoid_tabletPlannedReparentShard flag new_master replaced with new_primaryBackupShard flag allow_master replaced with allow_primaryBackup flag allow_master replaced with allow_primaryEmergencyReparentShard flag new_master replaced with new_primaryReloadSchemeShard flag include_master replaced with include_primaryReloadSchemaKeyspace flag include_master replaced with include_primaryValidateSchemaKeyspace flag skip-no-master replaced with skip-no-primarySHOW VITESS_REPLICATION_STATUS Query Support #8900
SHOW VITESS_REPLICATION_STATUS command/query shows the MySQL replica/replication (not vreplication) health for the vitess deployment.flag.Parse in commandGetRoutingRules #8795errcheck to golangci-lint #7996-restart_before_backup parameter for vtbackup #8608--onclose_timeout flag #8651rows as keyword in sqlparser #8467SetWritable, StartReplication and StopReplication rpcs #8816go get github.com/hashicorp/consul/[email protected] #8784fmt.Fprintf instead of fmt.Sprintf #8922The release includes 1351 commits (excluding merges)
Thanks to all our contributors: @Anders-PlanetScale, @GuptaManan100, @Johnny-Three, @Juneezee, @ajm188, @aquarapid, @askdba, @bnu0, @carsonoid, @choo-stripe, @dbussink, @dctrwatson, @deepthi, @demmer, @dependabot[bot], @derekperkins, @doeg, @eeSeeGee, @falun, @fatih, @frouioui, @hallaroo, @harshit-gangal, @ilikeorangutans, @mattlord, @rafael, @ritwizsinha, @rohit-nayak-ps, @sahutd, @shlomi-noach, @sonne5, @systay, @tdakkota, @tokikanno, @utk9, @vmg