You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[`EmergencyReparentShard` no longer waits on replicas that cannot win the election](#ers-lagging-relay-log-wait)
33
+
-[Reparent candidate ordering now respects partially ordered GTID histories](#reparent-gtid-candidate-ordering)
33
34
-**[VTTablet](#minor-changes-vttablet)**
34
35
-[Consolidator Reject on Waiter Cap](#vttablet-consolidator-reject-on-cap)
35
36
-[Query timeout for state-changing statements on the streaming path](#vttablet-stream-query-timeout)
@@ -279,6 +280,14 @@ This mirrors a tradeoff `orchestrator` made before Vitess: it never gated dead-p
279
280
280
281
See [#18529](https://github.com/vitessio/vitess/issues/18529).
281
282
283
+
#### <aid="reparent-gtid-candidate-ordering"/>Reparent candidate ordering now respects partially ordered GTID histories</a>
284
+
285
+
GTID containment is pairwise, so a candidate set can mix comparable and divergent histories: candidate A at `p:1-100,a:1-10` is strictly ahead of B at `p:1-100,a:1-5`, while C at `p:1-100,c:1-3` is incomparable with both. The reparent sorter that both `EmergencyReparentShard` and `PlannedReparentShard` use compared such candidates non-transitively, so ordering could depend on map iteration or RPC completion order, and `PlannedReparentShard` could select B even though A was known to be more advanced.
286
+
287
+
Candidates are now ordered by GTID dominance before the existing promotion-rule, buffer-pool, and tablet-alias tiebreakers, so a dominated candidate can never rank ahead of its dominator regardless of input order. `EmergencyReparentShard` still rejects incomparable candidates as split brain, and `PlannedReparentShard` still chooses among incomparable maximal candidates. Positions that contain each other without being equal (possible with MariaDB GTIDs, where containment ignores the origin server) are now also rejected by `EmergencyReparentShard` as split brain, wherever the pair sits among the candidates; previously a leading pair failed with an internal sorting error, while a pair behind a more advanced candidate was not detected at all.
288
+
289
+
See [#20579](https://github.com/vitessio/vitess/issues/20579).
290
+
282
291
### <aid="minor-changes-vttablet"/>VTTablet</a>
283
292
284
293
#### <aid="vttablet-consolidator-reject-on-cap"/>Consolidator Reject on Waiter Cap</a>
returnnil, nil, vterrors.Errorf(vtrpc.Code_INTERNAL, "candidate sorting error: %s has a more advanced position than the chosen candidate %s", topoproto.TabletAliasString(validTablets[i].Alias), topoproto.TabletAliasString(winningPrimaryTablet.Alias))
0 commit comments