Vitess
v24.0.4Storage & DataA security-focused maintenance release tightens TLS revocation and table ACL enforcement, removes a legacy `vtctld` HTTP surface, and includes compatibility changes for upgrades and Go package users. It also changes lz4 compression semantics and adds operational gRPC connection metrics.
Action needed (6)
securityTLS for gRPC clients with CRL configuration
A gRPC client configured with
--tablet-grpc-crl,--vtgate-grpc-crl, or another*-grpc-crlflag now connects with TLS and verifies the server against system roots when no client certificate or CA is configured. Previously, it connected in plaintext and silently ignored the CRL. GHSA-fxqj-c35w-x6rq is addressed by this change.securityRead checks under strict table ACL
Each read is checked like a plain
SELECTof the same tables under strict table ACL, with the same dry-run and exempt-ACL behavior as other table ACL checks. The change applies to--queryserver-config-strict-table-acland addresses GHSA-w6mx-2f8x-pqf4.securityThe
/api/HTTP API, removedThe HTTP API that
vtctldserved under/api/has been removed because it was dead code that exposed a security attack surface.breakingStartup validation for CRL configurations
Configurations where the CRL cannot be applied as configured are now refused when the TLS configuration is built at startup.
breakingRemoved
vtctldGo package APIsFor Go package users,
vtctld.,InitVtctld vtctld.,ActionRepository vtctld., andActionResult vtctld.have been removed.TabletWithURL breakingSubqueries in settings under strict table ACL
Under strict table ACL,
vttabletnow rejects a setting whose expressions contain a subquery.
Check if affected (1)
breakingTargeted
SETstatements with subqueries during upgradesApplies when vttablets are upgraded before vtgates.
In the usual upgrade order, with vttablets upgraded before vtgates, targeted
SETstatements containing subqueries are not supported until every vtgate has been upgraded. The alternative upgrade order is to upgrade vtgates first.
Plan ahead (1)
deprecatedThe
--cell,--proxy-tablets,--action-timeout, and--tablet-health-keep-aliveflags, deprecatedremoval planned in v26The flags
--cell,--proxy-tablets,--action-timeout, and--tablet-health-keep-aliveare deprecated in this release. They will be removed in v26.
All 13 other recorded changesfixes 16 · value changes 6 · constraints 2 · additions 1
fixes (16)
- A
SETof a system variable in a session targeted at a shard (use ks:-80) is now evaluated once on the target shard - mysql/json: read numbers the way MySQL does
- fix(vdiff): map source PK columns to their SELECT positions in getSourcePKCols
- vreplication: Fix --config-overrides silently erasing existing config keys
- use tablet db name override when reading current sequence value in SwitchTraffic dry run
- flagutil: keep the first value passed to StringSetFlag.Set
- vtadmin: send a non-empty :authority so gRPC works behind a proxy
- sqlparser: fix panic on WITH followed by parenthesized query
- vtorc: pass a heartbeat interval to
SetReplicationSourceonly forReplicaMisconfigured - vttablet: reset connection settings with the DEFAULT keyword
- smartconnpool: re-check capacity after getNew's CAS
- vttablet: reset foreign_key_checks and unique_checks settings to the global value
- tabletenv: Fix infinite recursion in OltpConfig.UnmarshalJSON
- VTTablet: discard a transaction's connection after a CALL ran on it
- vttablet: derive table ACL permissions the way MySQL resolves CTE names
- vttestserver: fail, don't panic, on a vschema missing a table or vindex
value changes (6)
- The exported
planbuilder.now returns a second result,BuildPermissions tablesUndetermined bool, alongside the permissions. - The
lz4compression engine now uses thepierrec/lz4/v4library instead ofpierrec/lz4v2. - vtgate: report RowsAffected for stored-procedure calls over the streaming path
- vtgate: list the session's SET_VAR hint variables in a fixed order
- Upgrade the Golang version to
go1.26. 8 - vtgate: only scan shard records for MoveTables state when routing rules reference the keyspace
constraints (2)
- VDiff: accept a target primary key that extends a unique source key
- Only negotiate multi statement support on connections that send batches
additions (1)
- now reports its connections by transport,
tlsorplaintext, in two new stats:GrpcOptionalTlsOpenConnections
A weekly email arrives when a release needs action. Like the security patches and breaking changes in this release.