|
8 | 8 | - [Window function pushdown for sharded keyspaces](#window-function-pushdown) |
9 | 9 | - [View Routing Rules](#view-routing-rules) |
10 | 10 | - [Tablet targeting via USE statement](#tablet-targeting) |
| 11 | + - **[Breaking Changes](#breaking-changes)** |
| 12 | + - [External Decompressor No Longer Read from Backup MANIFEST by Default](#vttablet-external-decompressor-manifest) |
11 | 13 | - **[Minor Changes](#minor-changes)** |
12 | 14 | - **[Logging](#minor-changes-logging)** |
13 | 15 | - [Structured logging](#structured-logging) |
|
30 | 32 | - [Improved VTOrc Discovery Logging](#vtorc-improved-discovery-logging) |
31 | 33 | - [Deprecated VTOrc Metric Removed](#vtorc-deprecated-metric-removed) |
32 | 34 | - [Deprecation of Snapshot Topology feature](#vtorc-snapshot-topology-deprecation) |
| 35 | + - [Ordered Recovery Execution and Semi-Sync Rollout](#vtorc-ordered-recovery-semi-sync) |
33 | 36 |
|
34 | 37 | ## <a id="major-changes"/>Major Changes</a> |
35 | 38 |
|
@@ -90,6 +93,16 @@ Once set, all subsequent queries in the session route to the specified tablet un |
90 | 93 |
|
91 | 94 | Note: A shard must be specified when using tablet targeting. Like shard targeting, this bypasses vindex-based routing, so use with care. |
92 | 95 |
|
| 96 | +### <a id="breaking-changes"/>Breaking Changes</a> |
| 97 | + |
| 98 | +#### <a id="vttablet-external-decompressor-manifest"/>External Decompressor No Longer Read from Backup MANIFEST by Default</a> |
| 99 | + |
| 100 | +The external decompressor command stored in a backup's `MANIFEST` file is no longer used at restore time by default. Previously, when no `--external-decompressor` flag was provided, VTTablet would fall back to the command specified in the `MANIFEST`. This posed a security risk: an attacker with write access to backup storage could modify the `MANIFEST` to execute arbitrary commands on the tablet. |
| 101 | + |
| 102 | +Starting in v24, the `MANIFEST`-based decompressor is ignored unless you explicitly opt in with the new `--external-decompressor-use-manifest` flag. If you rely on this behavior, add the flag to your VTTablet configuration, but be aware of the security implications. |
| 103 | + |
| 104 | +See [#19460](https://github.com/vitessio/vitess/pull/19460) for details. |
| 105 | + |
93 | 106 | ## <a id="minor-changes"/>Minor Changes</a> |
94 | 107 |
|
95 | 108 | ### <a id="minor-changes-logging"/>Logging</a> |
@@ -237,3 +250,11 @@ The lack of facilities to read the snapshots created by this feature coupled wit |
237 | 250 |
|
238 | 251 | **Impact**: VTOrc can no longer create snapshots of the topology in it's backend database. |
239 | 252 |
|
| 253 | +#### <a id="vtorc-ordered-recovery-semi-sync"/>Ordered Recovery Execution and Semi-Sync Rollout</a> |
| 254 | + |
| 255 | +VTOrc now executes recoveries per-shard with defined ordering, rather than per-tablet in isolation. Problems that have ordering dependencies (e.g., semi-sync configuration) are executed serially first, while independent problems are executed concurrently. This ensures that dependent recoveries happen in the correct sequence within a shard. |
| 256 | + |
| 257 | +The main user-facing improvement is to semi-sync rollouts: VTOrc now ensures replicas have semi-sync enabled before updating the primary. Previously, enabling semi-sync on the primary before enough replicas were ready could stall writes while the primary waited for semi-sync acknowledgements that no replica was prepared to send. |
| 258 | + |
| 259 | +See [#19427](https://github.com/vitessio/vitess/pull/19427) for details. |
| 260 | + |
0 commit comments