Skip to content

Commit 5ae7720

Browse files
committed
add release notes
Signed-off-by: Venkatraju V <venkatraju@slack-corp.com>
1 parent 66595ac commit 5ae7720

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

changelog/21.0/21.0.0/summary.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
- [VTTablet Flags](#vttablet-flags)
1010
- **[Breaking changes](#breaking-changes)**
1111
- **[Traffic Mirroring](#traffic-mirroring)**
12+
- **[New VTGate Shutdown Behavior](#new-vtgate-shutdown-behavior)**
13+
- **[Tablet Throttler: Multi-Metric support](#tablet-throttler)**
14+
- **[Allow Cross Cell Promotion in PRS](#allow-cross-cell)**
15+
- **[Support for recursive CTEs](#recursive-cte)**
16+
- **[VTGate Tablet Balancer](#tablet-balancer)**
1217

1318
## <a id="major-changes"/>Major Changes
1419

@@ -50,3 +55,48 @@ $ vtctldclient --server :15999 MoveTables --target-keyspace customer --workflow
5055
```
5156

5257
Mirror rules can be inspected with `GetMirrorRules`.
58+
59+
### <a id="new-vtgate-shutdown-behavior"/>New VTGate Shutdown Behavior
60+
61+
We added a new option to affect the VTGate shutdown process in v21 by using a connection drain timeout rather than the older activity drain timeout.
62+
The goal of this new behavior, connection draining option, is to disallow new connections when VTGate is shutting down,
63+
but continue allowing existing connections to finish their work until they manually disconnect or until the `--onterm_timeout` timeout is reached,
64+
without getting a `Server shutdown in progress` error.
65+
66+
This new behavior can be enabled by specifying the new `--mysql-server-drain-onterm` flag to VTGate.
67+
68+
See more information about this change by [reading its RFC](https://github.com/vitessio/vitess/issues/15971).
69+
70+
### <a id="tablet-throttler"/>Tablet Throttler: Multi-Metric support
71+
72+
Up till `v20`, the tablet throttler would only monitor and use a single metric. That would be replication lag, by default, or could be the result of a custom query. `v21` introduces a major redesign where the throttler monitors and uses multiple metrics at the same time, including the above two.
73+
74+
Backwards compatible with `v20`, the default behavior in `v21` is to monitor all metrics, but only use `lag` (if the cutsom query is undefined) or the `cutsom` metric (if the custom query is defined). A `v20` `PRIMARY` is compatible with a `v21` `REPLICA`, and a `v21` `PRIMARY` is compatible with a `v20` `REPLICA`.
75+
76+
However, with `v21` it is possible to assign any combination of metrics (one or more) for a given app. The throttler would then accept or reject the app's requests based on the health of _all_ assigned metrics. `v21` comes with a preset list metrics, expected to be expanded:
77+
78+
- `lag`: replication lag based on heartbeat injection.
79+
- `threads_running`: concurrent active threads on the MySQL server.
80+
- `loadavg`: per core load average measured on the tablet instance/pod.
81+
- `custom`: the result of a custom query executed on the MySQL server.
82+
83+
Each metric has a factory threshold which can be overridden by the `UpdateThrottlerConfig` command.
84+
85+
The throttler also supports the catch-all `"all"` app name, and it is thus possible to assign metrics to _all_ apps. Explicit app to metric assignments will override the catch-all configuration.
86+
87+
Metrics are assigned a default _scope_, which could be `self` (isolated to the tablet) or `shard` (max, aka _worst_ value among shard tablets). It is further possible to require a different scope for each metric.
88+
89+
### <a id="allow-cross-cell"/>Allow Cross Cell Promotion in PRS
90+
Up until now if the users wanted to promote a replica in a different cell than the current primary using `PlannedReparentShard`, they had to specify the new primary with the `--new-primary` flag.
91+
92+
We have now added a new flag `--allow-cross-cell-promotion` that lets `PlannedReparentShard` choose a primary in a different cell even if no new primary is provided explicitly.
93+
94+
### <a id="recursive-cte"/>Experimental support for recursive CTEs
95+
We have added experimental support for recursive CTEs in Vitess. We are marking it as experimental because it is not yet fully tested and may have some limitations. We are looking for feedback from the community to improve this feature.
96+
97+
### <a id="tablet-balancer"/>VTGate Tablet Balancer
98+
When a VTGate routes a query and has multiple available tablets for a given shard / tablet type (e.g. REPLICA), the current default behavior routes the query with local cell affinity and round robin policy. The VTGate Tablet Balancer provides an alternate mechanism that routes queries to maintain an even distribution of query load to each tablet, while preferentially routing to tablets in the same cell as the VTGate.
99+
100+
The tablet balancer is enabled by a new flag `--enable-balancer` and configured by `--balancer-vtgate-cells` and `--balancer-keyspaces`.
101+
102+
See [RFC for details](https://github.com/vitessio/vitess/issues/12241).

0 commit comments

Comments
 (0)