Proto commits in vitessio/vitess

These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)

Commit:fc06bc8
Author:Claude

Document the mixed-version guard of Group Replication The design document describes the keyspace record of a migration (step 0 names the target policy and keeps the migration source, step 8 removes it), the invariant that the keyspace's policy names a Group Replication policy whenever a shard may run a group, what an older VTOrc, vtctld and vttablet do under it, the capability checks before a group is initialized or its primary promoted, where a policy can be set and the guard of SetKeyspaceDurabilityPolicy, and the operator rules that no component can check. The comment of FullStatus field 29 now says that the tablet also resolves the keyspace's migration source. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:53b4299
Author:Claude

Resolve a shard's policy through the keyspace's migration source Adds Keyspace.migration_source_durability_policy (field 13). While it is set, it is the policy of every shard of the keyspace that has no policy of its own, and the keyspace's durability_policy can already name the target of a migration to Group Replication: a component that does not know the field then reads a group replication policy for every shard of a keyspace in which a shard may run a group, and fails safe if it does not know that policy either. topo.ShardDurabilityPolicy takes the keyspace record and resolves the shard's own policy, else the migration source, else the keyspace's policy. VTOrc stores the migration source with its copy of the keyspace record and resolves it in the detection analysis and its recoveries. The vttablet resolves it through topo.GetShardInfoDurability. The field is additive: an older reader skips it, and a record without it encodes as before. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:914b2f4
Author:Claude

Merge origin/main into the Group Replication prototype Conflicts: the help text of VTOrc's flags (both sides added flags), and the generated vtctldata vtproto code, which was regenerated with the Makefile's protoc command. The regeneration also brings the vtproto code of replicationdata, tabletmanagerdata and topodata back to the form that the Makefile generates. The required position of VTOrc's ERS reads the durability policy of the shard rather than the keyspace's, since a shard can have its own policy during a migration. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:b8c4855
Author:Claude
Committer:Claude

Withdraw the bootstrap intent of a definitively refused bootstrap After a loss of majority, VTOrc records a bootstrap intent for the voter it chose, and the intent fences a bootstrap on any other voter for two minutes, so that the group of a bootstrap whose reply was lost can be adopted. If the chosen voter's mysqld restarted after VTOrc read it, its relay log is gone, and its tablet correctly refuses the bootstrap for the transactions it lost (47d5e41); but the intent still named it, and the voter that holds those transactions could not be bootstrapped until the intent expired. TestGroupReplicationWithdrawsRefusedBootstrapIntent reproduces it on MySQL 8.4: the primary was bootstrapped 99.8s after the refusal, 121.2s after VTOrc's intent. The tablet now reports a refusal as definitive when it proves that the request did not, and never will, start MySQL's bootstrap: - only the refusal for a transaction of required_gtid_set that MySQL lacks, also after the RPC stopped a START that was in progress; - only if a fresh read of MySQL's status under the action lock finds it in no group, with no START GROUP_REPLICATION in performance_schema.processlist: a START that an earlier RPC issued before its client gave up can still form a group of one. Every START of the tablet runs under the action lock, and MySQL starts none on its own, so none can start afterwards. A refusal of a superseded intent, of an active member, the UNAVAILABLE of a START in progress, and every other failure stay plain errors. The signal is structured: a new optional request field, report_definitive_refusal, asks the tablet to report such a refusal in a new response field, definitive_refusal, rather than as an error (gRPC carries one or the other). The client returns it as tmclient.GroupBootstrapRefusedError, with code FAILED_PRECONDITION. A tablet that does not know the request field refuses with an error, as before, and a client that does not set it gets one. The proto change is generated with protoc for tabletmanagerdata.proto only, additively. On a definitive refusal, VTOrc withdraws its intent under the shard lock, which it re-checks first (reparentutil.WithdrawGroupReplicationBootstrapIntent): a compare-and-swap that removes the intent only while the shard record holds its token, for the incarnation it was recorded for, so that a newer intent of another VTOrc, or an incarnation recorded since, stays. VTOrc sends one RPC per intent, and an older RPC that still waits for the tablet's lock is refused by the token check. Its next pass chooses again: the e2e test bootstraps the primary 1.7s after the refusal, 24.2s after the intent (the test holds the candidate's lock for 25s). A timeout, a transport error, a canceled context or a plain refusal keep the intent, for adoption or expiry, as before. Tests, each failing without its change: the tablet marks only the qualifying refusals as definitive, and none while a START runs; VTOrc withdraws on a definitive refusal and bootstraps another voter on its next pass, and keeps the intent on a timeout, a transport error, a canceled context and a plain refusal; the compare-and-swap leaves a newer intent, an incarnation recorded since, and needs the shard lock; the tmrpctest round trip carries the refusal through gRPC. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:8a5fdb3
Author:Claude
Committer:Claude

Refuse a bootstrap whose intent was superseded The TLA+ model's integrated simulation found two groups bootstrapped from the same recorded incarnation, with every fix on. VTOrcs o1 and o2 both chose voter s1, o1's shard lock having expired, and o2's intent replaced o1's. o2's RPC bootstrapped s1 and o2 recorded the group. o1's RPC still waited for s1's action lock; s1's MySQL then left its group of one, and o1's RPC bootstrapped s1 again, while o2, finding every voter out of a group, bootstrapped s2. The compare-and-swap refuses to record s1's group, which stays read-only and unserved, but s1 is out of the shard's group until it leaves it, up to the one-minute grace. VTOrc now sends the intent's token, and the incarnation the intent was recorded for, with the bootstrap RPC (StartGroupReplicationRequest fields bootstrap_intent_token and expected_incarnation, optional and additive; empty means no check). Under the action lock the tablet reads the shard record and refuses with FAILED_PRECONDITION if it no longer holds that intent, or lists another incarnation: - when the RPC gets the lock, before it changes anything: a stale request no longer stops a PRIMARY tablet from serving, nor lifts the explicit stop of its rejoins; - before each STOP of a START GROUP_REPLICATION in progress: that START may be the bootstrap of the newer intent, whose group the STOP would make MySQL leave before VTOrc adopts it; - right before MySQL's START. Each read waits at most groupReplicationTopoReadTimeout (1s), like the bootstrap's other topology reads, so the lock is never held across an unbounded read. If the topology does not answer, the tablet bootstraps without the check, as before: the check protects the availability of the shard's group, which a bootstrap that cannot run would cost. With the token check, the model found a second path to the same state: a late bootstrap reply recorded an incarnation that another VTOrc had recorded already, and that write cleared the intent the other VTOrc had recorded since, for the group's next bootstrap, while that bootstrap still ran. Nothing then fenced a bootstrap on another voter, and the running bootstrap's group could not be adopted. Recording an incarnation that is recorded already now clears only an intent for an earlier incarnation. The proto change is generated with protoc for tabletmanagerdata.proto only, additively. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:47d5e41
Author:Claude
Committer:Claude

Bootstrap a group only from a binlog that holds every voter's transactions The TLA+ model in doc/design-docs/group_replication_tla found that an acknowledged write could be lost through VTOrc's choice of the voter to bootstrap after a loss of majority. VTOrc ranked the voters by their executed and received GTID sets and broke ties by the lowest alias, so a voter that held an acknowledged transaction only in the relay log of its group_replication_applier channel could win over the old primary, which had it in its binlog. A restart of that voter's mysqld before the bootstrap's START discards the relay log (relay_log_recovery=ON), and the new group lacks the write; the old primary can then never join it. Lab, raw MySQL 8.4.11 (doc/failover-audit/GroupReplication.md, "Bootstrap candidate"): a member whose relay log holds transactions that the group it joins lacks applies them when its START begins, and MySQL then refuses the join for good; a member that bootstraps applies its relay log first; a restart discards it; and START REPLICA SQL_THREAD FOR CHANNEL 'group_replication_applier' applies it, into the binlog, while Group Replication is stopped. The rule: - VTOrc still requires a candidate whose executed and received set contains every voter's: a voter left with transactions that the new group lacks could never join it. A voter that executed them all can be missing: a transaction that a group decided while its primary crashed before committing it may sit in a relay log only, never acknowledged, and requiring it in a binlog would block the bootstrap for good. - Among the candidates, VTOrc prefers the target of a live intent, then a voter that executed every transaction (the old primary), then as before. - The bootstrap RPC carries the union of every voter's executed and received sets (StartGroupReplicationRequest.required_gtid_set, a new optional field). Under the action lock, right before START, the tablet applies its relay log if MySQL has not executed all of it yet, and refuses with FAILED_PRECONDITION unless the executed set then contains it; VTOrc re-reads every voter and chooses again on its next pass. Every acknowledged transaction is in the executed set of the primary that acknowledged it, so the check is on the binlog, which no restart can lose. An empty field means no check, as for the migration's and InitPrimary's bootstraps. The tmclient and tablet manager StartGroupReplication methods take the request instead of the bootstrap flag. The proto change is generated with protoc for tabletmanagerdata.proto only; both generated files change additively. TestBootstrapGroupReplicationPrefersTransactionsInTheBinlog reproduces the model's interleaving on VTOrc and now passes. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:160509b
Author:Claude
Committer:Claude

Disable mysql_disable_super_read_only_if_primary: only Vitess makes MySQL writable Group Replication's member action mysql_disable_super_read_only_if_primary clears super_read_only on the member it elects primary, after every election: a bootstrap, a failover, group_replication_set_as_primary, and the election of a member alone in a group of its own. A stray group that a join formed was therefore writable until the fence check fenced it, and a bootstrapped primary before its incarnation was recorded. With the action disabled, every election leaves the new primary super_read_only (sro-eval case B, MySQL 8.4.11), and the tablet makes MySQL writable only on a decision that it may serve, under the action lock, with the serving invariant holding. - go/mysql: the commands that disable and enable the action, a read of the action and the configuration version (performance_schema replication_group_member_actions and replication_group_configuration_ version), and GroupReplicationStatus.primary_election_in_progress (field 14, THD_primary_election_primary_process in performance_schema.threads). - ConfigureGroupReplication, which runs before every START, disables the action in the member's own configuration if it is enabled there, lifting super_read_only for the change like INSTALL PLUGIN: a group that a member forms on its own uses that configuration. - The serving, writable primary of a group disables it in the group's configuration if a group bootstrapped before has it enabled, once per incarnation and every minute, under the action lock. - Group Replication sets super_read_only again when an election ends, undoing an earlier clear. PromoteReplica and InitPrimary wait until MySQL is the group primary and its election ended; every decision to serve waits for the end of the election first (changeTypeLocked, UndoDemotePrimary, serveAgain, the end of a planned pause, the end of a join or bootstrap of a PRIMARY tablet), and a primary whose election still runs does not serve. Making MySQL writable during an election is refused (UNAVAILABLE). - liftGroupReplicationFenceLocked makes MySQL writable whenever it is read-only and the decision allows, not only when the fence check fenced it, and redoes the prepared transactions of a promotion that did not serve. A promotion refused by the serving invariant leaves MySQL read-only. - A serving PRIMARY whose MySQL is read-only is made writable again by the sync loop, woken by the fence check; a primary that DemotePrimary demoted is left to its caller. - SetReadWrite is refused unless the serving invariant holds. - VTOrc's PrimaryIsReadOnly and PrimaryCurrentTypeMismatch, whose recovery is UndoDemotePrimary, apply under a group replication policy only to the legitimate group's primary. - The fence check stays for the shrink case; its stray-group branch is defense in depth now. The migration back does not reset the action: the asynchronous paths never consult it. The replicationdata.pb.go change is generated with protoc for replicationdata.proto only; the vtprotobuf change is a purely additive hand patch, identical to protoc-gen-go-vtproto's output, and a round-trip test checks it. TestGroupReplicationLifecycle checks that every member has the action disabled after the migration and after a member rejoined. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:51e90e9
Author:Claude
Committer:Claude

Track a START GROUP_REPLICATION in progress, and never join a PRIMARY tablet A START GROUP_REPLICATION that finds no group reports the member OFFLINE for about a minute, and can still end with the member alone in a group of its own. MySQL refuses a STOP, and a second START, meanwhile with errno 3663 ("Another instance of START/STOP GROUP_REPLICATION command is executing"), and accepts group_replication_bootstrap_group=ON (sro-eval case A, MySQL 8.4.11). - GroupReplicationStatus gains start_in_progress (field 13), read from performance_schema.processlist, which lists the START for as long as it runs, also after its client was killed. FullStatus ORs it with the tablet's own joins and bootstraps in progress. - VTOrc stores it (gr_start_in_progress). Such a voter counts as active for GroupNotBootstrapped, is not joined again by GroupMemberNotOnline, and BootstrapGroupReplication refuses to bootstrap while any tablet reports one. ClusterHasNoPrimary and PrimaryTabletDeleted keep ignoring a shard without an active member. A bootstrap may wait up to about a minute for a stuck START; MySQL refuses to stop it before it ends anyway. - The tablet recognizes 3663 with that message as a command in progress. stopOngoingGroupStartLocked tries the STOP again every second, for at most 10s or the caller's context, and then fails with UNAVAILABLE. - mysqlctl refuses (UNAVAILABLE) to set group_replication_bootstrap_group while a START runs, which MySQL could complete as a bootstrap. - The sync loop does not start a join while MySQL runs a START. - GroupMemberNotOnline never matches a PRIMARY tablet, in the topology or in its own state: the tablet demotes itself first. As defense in depth, StartGroupReplication(bootstrap=false) on a PRIMARY tablet under a group replication policy with voters, whose MySQL is not an active member, fails with FAILED_PRECONDITION. The migration only joins replicas. - The comment on readGroupReplicationFenceStatusFormat no longer claims that member_stats blocks for the whole START: it answers at once during a blocked START, and blocks about a second only at admission or group formation. The replicationdata.pb.go change is generated with protoc for replicationdata.proto only; the vtprotobuf change is a purely additive hand patch, identical to protoc-gen-go-vtproto's output, and a round-trip test checks it. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:8b512b7
Author:Claude
Committer:Claude

Resolve the durability policy per shard during a replication mode migration MigrateReplicationMode converts a keyspace one shard at a time and switches the keyspace durability policy only after the last shard. Until then, a converted shard ran its group while every component managed it by the keyspace's semi-sync policy: ERS took the asynchronous path on a group, PRS promoted tablets without the voter checks, VTOrc ran none of the Group Replication analyses and recoveries and undid the conversion (StaleTopoPrimary configured asynchronous replication on an old primary that is a voter, ReplicaSemiSyncMustBeSet turned semi-sync back on), and the tablets applied neither the serving invariant nor rejoins, and trusted a stale PRIMARY record. The migration back had the mirror problem: it switched the keyspace policy first, so every shard not converted back yet lost the Group Replication rules while it still ran its group. A shard can now have a durability policy of its own (new optional field Shard.durability_policy). A single resolver, topo.ShardDurabilityPolicy ("the shard's own policy if set, else the keyspace's"), is used by every decision that depends on the policy: PRS, ERS, InitShardPrimary and the replica semi-sync of vtctld and the wrangler; VTOrc's detection analysis (vitess_shard.durability_policy) and every recovery; and the tablet's sync loop, startup, RPCs and member weight. vtctld resolves it from the shard record it read under the shard lock, VTOrc after refreshing the records under the shard lock, and the tablet reads the shard and keyspace records together; the sync loop drops its 10s policy cache as soon as a shard record it reads sets another own policy. MigrateReplicationMode changes a shard's policy only under its shard lock, at one step of its conversion: to Group Replication as the last step, once the group runs with every voter, its incarnation recorded and semi-sync superseded; back to semi-sync as the first step, before the group shrinks. The keyspace policy is switched in both directions only once every shard is converted to the target policy, so the switch changes no shard's policy, and the shards' own policies are then removed. Re-runs continue where a run stopped, and a shard that runs its group without a policy of its own is not counted as converted. Components that do not know the field use the keyspace policy, which is wrong for a converted shard of a half-migrated keyspace: vtctld, VTOrc and every vttablet must be upgraded before a migration starts. The tablets report that they know it (new optional field FullStatus.shard_durability_policy_supported), and the migration refuses voters and members that do not. The proto changes are generated with protoc for topodata.proto and replicationdata.proto only; the vtprotobuf output is purely additive and a round-trip test checks it. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:09586e6
Author:Claude
Committer:Claude

Adopt a Group Replication group whose bootstrap reply was lost If VTOrc's BootstrapGroupReplication RPC succeeded but its reply was lost (timeout, partition, VTOrc crash), the new incarnation was never recorded. The tablet trusted the group it bootstrapped for a minute, the other voters did not join an unrecorded incarnation, and nothing else could bootstrap the group meanwhile (S7d run r3 in doc/failover-audit/GroupReplication.md). Before it bootstraps, VTOrc now records a bootstrap intent in the shard record, under the shard lock: the target tablet, the time, the incarnation the shard record listed, and a token (new optional field Shard.group_replication_bootstrap_intent; older readers ignore it, and an intent that a component unaware of it superseded no longer applies). If the RPC fails, or on a later pass (new analysis GroupBootstrapNotRecorded), VTOrc adopts the target's group and records its incarnation when the group's primary is the intent's target, with quorum, its incarnation differs from the intent's previous one, and it was created after the intent. A stray group of another voter, or the old incarnation, is never adopted. The intent also fences a second bootstrap: while an intent for another tablet is younger than two minutes, no other bootstrap starts, since the first one may still be running with its member not active yet. Incarnation writes are now a compare-and-swap against the incarnation the caller read before it changed the group, and clear the intent. The Shard change is generated with protoc for topodata.proto only; the vtprotobuf output is purely additive and a round-trip test checks it. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:c88aff6
Author:vitess-bot[bot]
Committer:vitess-bot[bot]

Cherry-pick a240ed6c4bf6aae24b6f4a0b4c14bf2f5dd85aa5 with conflicts

Commit:a38864d
Author:vitess-bot[bot]
Committer:vitess-bot[bot]

Cherry-pick a240ed6c4bf6aae24b6f4a0b4c14bf2f5dd85aa5 with conflicts

Commit:a240ed6
Author:Arthur Schreiber
Committer:GitHub

Refer to flags by their dashed names in help and error text (#21339) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

The documentation is generated from this commit.

Commit:4689ec4
Author:Mohamed Hamza
Committer:GitHub

Add `--required-position` to `EmergencyReparentShard` (#21143) Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:2b00fc5
Author:Claude

Run Group Replication on the MySQL communication stack Groups now always use group_replication_communication_stack=MYSQL. Members connect to each other through the MySQL port of their tablet records, authenticated as the replication user, instead of XCom's separate port, allowlist and TLS settings. MySQL deprecates XCom in 9.7.2 and makes MYSQL the default in 26.7. - --enable-group-replication replaces --group-replication-port; the tablet record no longer carries a "gr" port. FullStatus reports the flag (group_replication_enabled), which the migration preflight checks. - The local address and seeds are the tablets' MySQL host:port. - The tablet stores the replication user's credentials on the group_replication_recovery channel, which the MySQL stack uses for the group's connections; START GROUP_REPLICATION no longer passes them. - The replication user needs GROUP_REPLICATION_STREAM and CONNECTION_ADMIN. init_db.sql grants them, and the tablet checks mysql.global_grants before a join and refuses with FAILED_PRECONDITION naming the GRANT to run. The GR e2e tests and the chaos scenarios S1, S2, S3, S9i and G3E pass on the MySQL stack with failover times matching the XCom runs and no acked writes lost. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89 Signed-off-by: Claude <noreply@anthropic.com>

Commit:a0acd14
Author:Claude

Stop reading the group communication information, and bound status reads After SIGSTOP/SIGCONT, the expelled old primary wedged in ERROR in 3 of 3 S2 runs (NEW-5 in doc/failover-audit/GroupReplication.md): the status query on performance_schema.replication_group_communication_information, issued only to fill paxos_single_leader, waited forever in the group communication engine while holding the lock that the member's own rejoin needed. The query ran without a context, so a forced DemotePrimary from VTOrc hung inside it holding the tablet's action lock. - FullStatus.GroupReplicationStatus.paxos_single_leader now comes from @@global.group_replication_paxos_single_leader in the existing variables query. Vitess sets it on every member before it starts Group Replication, and MySQL refuses a joiner whose setting differs. - mysqlctl runs the status queries with the caller's context (the connection is killed and closed when it expires), in GroupReplicationStatus, ConfigureGroupReplication and FullStatus. - The tablet bounds every status read by 10s, whatever its caller's context, so the sync loop and DemotePrimary cannot hold the action lock on it indefinitely. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:d410495
Author:Claude

Follow only the shard's legitimate replication group A member that left its group and was made to join again while the other members were leaving has been seen to end up alone in a new group incarnation, ONLINE and PRIMARY with quorum in its view of one (S7d in doc/failover-audit/GroupReplication.md, NEW-1). The tablet promoted itself and the transactions acknowledged by the other members were lost. Record the incarnation of the shard's group (the view id prefix) in the new Shard.group_replication_incarnation when Vitess bootstraps a group: MigrateReplicationMode, PlannedReparentShard's initial promotion, InitShardPrimary and VTOrc's BootstrapGroupReplication. The reverse migration clears it. policy.LegitimateGroup defines the primary Vitess may follow: the ONLINE primary of a group with quorum, in the recorded incarnation, whose view holds a majority of the listed voters (matched by server_uuid or MySQL address). The tablet sync loop, VTOrc (GroupPrimaryNotInTopo, PromoteGroupPrimary, voter selection, GroupMemberNotOnline), ERS and the PRS preflight use it. A member active in another incarnation makes its tablet leave that group and suspend its own rejoins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:eaa70b0
Author:Mohamed Hamza
Committer:Mohamed Hamza

vtctldclient: say that any candidate may hold the required position Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:cd70190
Author:Mohamed Hamza
Committer:Mohamed Hamza

proto: match the required position comment to the option doc Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:4d63ad3
Author:Mohamed Hamza
Committer:Mohamed Hamza

vtctldclient: say that a wrong shard type fails after the primary is demoted Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:43902d5
Author:Mohamed Hamza
Committer:Mohamed Hamza

vtctldclient: drop the MySQL56 prefix from the required position help The prefix is an internal Vitess detail, and MySQL prints a GTID set without it. The flag help and the proto comment now describe the value as the minimum MySQL GTID set. Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:e812828
Author:Mohamed Hamza
Committer:Mohamed Hamza

Add `--required-position` to `EmergencyReparentShard` `EmergencyReparentOptions.RequiredPosition` exists in reparentutil but nothing outside the process can set it. This adds `required_position` to `EmergencyReparentShardRequest` and a `--required-position` flag on the vtctldclient command. vtctld decodes the string before it takes the shard lock and returns `INVALID_ARGUMENT` on bad input. A bare GTID set without the `MySQL56/` prefix is accepted, since that is how MySQL prints it and the check supports MySQL56 only. Part of #21109. Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:b1cb5a4
Author:Claude

Record Group Replication voters in the shard record and select them per cell Add Shard.group_replication_voters, the tablets that are the voting members of a shard's group, and SelectVoters, which picks them for a durability policy while changing the current voters as little as possible. The cross-cell policy allows one voter per cell. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:7413de0
Author:Claude

Always apply the expel timeout and paxos single leader settings Vitess's Group Replication design depends on both: an expel timeout of 0 is what makes failovers take about 7 seconds instead of 22, and the paxos single leader setting must be identical on every member, since MySQL refuses a joiner whose setting differs from its group's. Neither is useful as a per-tablet flag, so apply them unconditionally and drop the flags and the logic that made joiners adopt their group's setting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:f264bf7
Author:Claude

Default to the Group Replication settings of the consensus RFC Add --group-replication-member-expel-timeout (default 0) and --group-replication-paxos-single-leader (default ON), and lower the default --group-replication-unreachable-majority-timeout to 1s, matching the settings proposed in #18648. On MySQL 8.4.11 any expel timeout from 1 to 10 seconds delays the expulsion of a failed member by 16 seconds, so the group replaced a failed primary after about 22 seconds. With 0 the end-to-end test sees the new primary in the topology 6.6 seconds after the old primary's mysqld is killed. MySQL refuses a joining member whose paxos single leader setting differs from its group's, so the flag only applies when a tablet bootstraps a group. A joining tablet adopts the setting of the group, which FullStatus now reports. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:464f89a
Author:Claude
Committer:Claude

vtgate: name result columns in the session's charsets, as MySQL does MySQL reads select expressions in character_set_client and text literals in character_set_connection when it names result columns, and converts the names to character_set_results when it sends them. vtgate ignored these charsets, so clients that do not use utf8mb4 got different names, and it rejected SET character_set_results = binary as a syntax error. The session now keeps the client, connection and results charsets. The handshake, SET NAMES, SET CHARACTER SET, and SET of character_set_client, character_set_connection, character_set_results and collation_connection set them; they are still not set on the tablets. vtgate names result columns with the client and connection charsets, which are part of the plan cache key, since plans carry the names, and the MySQL protocol server converts result metadata to the results charset, copying fields only when a name changes. The parser accepts binary as the value of a system variable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qgj8xZGox7XHv97eFvEJcP

Commit:b8cdf20
Author:Claude

Add MigrateReplicationMode to convert shards to and from group replication A new vtctld RPC and vtctldclient command converts the shards of a keyspace between asynchronous (semi-sync) replication and MySQL Group Replication, online, with the logic in reparentutil.ReplicationModeMigrator so that VTOrc can reuse it. To group replication, each shard is converted under its shard lock: a preflight (reachability, GTID mode, ROW binlogs, MySQL 8.0.27+, 3-9 voting members with a gr port, cross-cell placement, primary keys and InnoDB), bootstrap on the primary, joins one replica at a time with cross-cell replicas first, a wait for the primary to disable semi-sync before its last semi-sync acker joins, and async non-voting replicas. The keyspace policy switches once every shard runs group replication. Back to asynchronous replication, the keyspace policy switches first, the secondaries leave the group and replicate from the primary, the migrator waits for the primary to re-enable semi-sync, and the primary leaves last. Every step inspects the current state first, so a failed migration can be run again; --dry-run returns the plan. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:a04f45c
Author:Claude

Group Replication foundation: replication mode, MySQL primitives, FullStatus and RPC surface Add the building blocks for MySQL Group Replication as a first-class replication mode: - group_replication and group_replication_cross_cell durability policies, with an optional ReplicationModer interface so out-of-tree Durablers keep compiling. - GroupReplicationStatus in FullStatus, and MySQL/mysqlctl primitives to configure, start, stop and switch the primary of a group. - StartGroupReplication/StopGroupReplication tablet manager RPCs (tablet side stubbed). - Read only the default replication channel in the MySQL flavors, so the channels Group Replication creates do not break status parsing. - Design document. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HSaG275VLNRg3UfsJ3bY89

Commit:1c31be4
Author:Mohamed Hamza
Committer:Mohamed Hamza

proto: match the required position comment to the option doc Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:2bd899b
Author:Mohamed Hamza
Committer:Mohamed Hamza

vtctldclient: drop the MySQL56 prefix from the required position help The prefix is an internal Vitess detail, and MySQL prints a GTID set without it. The flag help and the proto comment now describe the value as the minimum MySQL GTID set. Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:7f035bf
Author:Mohamed Hamza
Committer:Mohamed Hamza

Add `--required-position` to `EmergencyReparentShard` `EmergencyReparentOptions.RequiredPosition` exists in reparentutil but nothing outside the process can set it. This adds `required_position` to `EmergencyReparentShardRequest` and a `--required-position` flag on the vtctldclient command. vtctld decodes the string before it takes the shard lock and returns `INVALID_ARGUMENT` on bad input. A bare GTID set without the `MySQL56/` prefix is accepted, since that is how MySQL prints it and the check supports MySQL56 only. Part of #21109. Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:15ec82a
Author:Mohamed Hamza
Committer:Mohamed Hamza

proto: match the required position comment to the option doc Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:a9b5b9e
Author:Mohamed Hamza
Committer:Mohamed Hamza

vtctldclient: drop the MySQL56 prefix from the required position help The prefix is an internal Vitess detail, and MySQL prints a GTID set without it. The flag help and the proto comment now describe the value as the minimum MySQL GTID set. Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:15d5354
Author:Mohamed Hamza
Committer:Mohamed Hamza

Add `--required-position` to `EmergencyReparentShard` `EmergencyReparentOptions.RequiredPosition` exists in reparentutil but nothing outside the process can set it. This adds `required_position` to `EmergencyReparentShardRequest` and a `--required-position` flag on the vtctldclient command. vtctld decodes the string before it takes the shard lock and returns `INVALID_ARGUMENT` on bad input. A bare GTID set without the `MySQL56/` prefix is accepted, since that is how MySQL prints it and the check supports MySQL56 only. Part of #21109. Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:269758e
Author:Mohamed Hamza
Committer:Mohamed Hamza

Add `--required-position` to `EmergencyReparentShard` `EmergencyReparentOptions.RequiredPosition` exists in reparentutil but nothing outside the process can set it. This adds `required_position` to `EmergencyReparentShardRequest` and a `--required-position` flag on the vtctldclient command. vtctld decodes the string before it takes the shard lock and returns `INVALID_ARGUMENT` on bad input. A bare GTID set without the `MySQL56/` prefix is accepted, since that is how MySQL prints it and the check supports MySQL56 only. Part of #21109. Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:ed5c7f1
Author:Mohamed Hamza
Committer:Mohamed Hamza

Add `--required-position` to `EmergencyReparentShard` `EmergencyReparentOptions.RequiredPosition` exists in reparentutil but nothing outside the process can set it. This adds `required_position` to `EmergencyReparentShardRequest` and a `--required-position` flag on the vtctldclient command. vtctld decodes the string before it takes the shard lock and returns `INVALID_ARGUMENT` on bad input. A bare GTID set without the `MySQL56/` prefix is accepted, since that is how MySQL prints it and the check supports MySQL56 only. Part of #21109. Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:0103300
Author:Mohamed Hamza
Committer:Mohamed Hamza

Add `--required-position` to `EmergencyReparentShard` `EmergencyReparentOptions.RequiredPosition` exists in reparentutil but nothing outside the process can set it. This adds `required_position` to `EmergencyReparentShardRequest` and a `--required-position` flag on the vtctldclient command. vtctld decodes the string with `replication.DecodePosition` before it takes the shard lock and returns `INVALID_ARGUMENT` on bad input. An e2e test covers the wiring from the CLI to ERS. Part of #21109. Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:4c66b8c
Author:Mohamed Hamza
Committer:Mohamed Hamza

Add `--required-position` to `EmergencyReparentShard` `EmergencyReparentOptions.RequiredPosition` exists in reparentutil but nothing outside the process can set it. This adds `required_position` to `EmergencyReparentShardRequest` and a `--required-position` flag on the vtctldclient command. vtctld decodes the string with `replication.DecodePosition` before it takes the shard lock and returns `INVALID_ARGUMENT` on bad input. An e2e test covers the wiring from the CLI to ERS. Part of #21109. Signed-off-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:e7ea479
Author:Matthias Crauwels
Committer:GitHub

VStream: add before_data_columns bitmap for partial before images (#21067) Signed-off-by: Matthias Crauwels <matthias.crauwels@planetscale.com>

Commit:2265cac
Author:Matt Lord
Committer:GitHub

VTGate: Keep idle connections holding temp tables alive with a heartbeat (#20429) Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:01a25a7
Author:Pedro Albuquerque
Committer:GitHub

VDiff: add --no-samples option to vdiff show (#20870) Signed-off-by: Pedro Albuquerque <pedro.albuquerque@slack-corp.com>

Commit:f625058
Author:Matt Lord

Merge remote-tracking branch 'oss/main' into trx_temp_tables

Commit:25b3457
Author:Eduardo J. Ortega U.
Committer:GitHub

Make PRS & ERS new primary selection MySQL version aware (#20211) Signed-off-by: Eduardo Ortega <5791035+ejortegau@users.noreply.github.com> Signed-off-by: Eduardo J. Ortega U. <5791035+ejortegau@users.noreply.github.com> Co-authored-by: Claude <svc-devxp-claude@slack-corp.com>

Commit:400013a
Author:Matt Lord

Merge remote-tracking branch 'oss/main' into trx_temp_tables

Commit:18dc5a3
Author:Tim Vaillancourt
Committer:GitHub

`EmergencyReparentShard`: add explicit split-brain recovery (#20780) Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com>

Commit:4425351
Author:Max Englander
Committer:GitHub

ApplySchema: add session variable options (#20654) Signed-off-by: Max Englander <max@planetscale.com> Signed-off-by: Max Englander <max.englander@gmail.com> Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

Commit:e5901c7
Author:Matt Lord

Address more of Graham's comments Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:fbd0287
Author:Matt Lord

Address Graham's comments Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:4dcb41d
Author:Matt Lord
Committer:Matt Lord

More review comment fixes Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:05eae69
Author:Matt Lord

Address more review comments Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:659ae9f
Author:Matt Lord

Don't reset mysqld's wait_timeout on keep-alives Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:43fb69f
Author:Matt Lord
Committer:GitHub

Use quorum assessment of primary down and ERS (#20253) Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:00fb91f
Author:Matt Lord
Committer:Matt Lord

Address review comment Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:c70e990
Author:Matt Lord

Address fable review comments Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:461b17c
Author:Matt Lord

Use quorum assessment of primary down and ERS Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:6784781
Author:Arthur Schreiber

Honor FetchLastInsertId on the raw streaming path MySQL hardcodes last_insert_id=0 in a streamed SELECT terminator, so the value a LAST_INSERT_ID(x) call set never rides the raw wire bytes. Mirror the non-raw path: reset the connection's last insert id before the query and refetch it with "select last_insert_id()" afterwards, returning it out-of-band so vtgate can surface it as an extra Result. Adds insert_id / insert_id_changed to the 4 *Raw response messages and a StreamExecuteRawState carrying the value out of StreamExecuteRaw; folds InsertID/InsertIDChanged into the Transaction/Reserved state structs. The explicit changed bit distinguishes a genuine LAST_INSERT_ID(0) from unset. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:2fd8492
Author:Arthur Schreiber

StreamExecuteRaw: bidi *Raw streaming RPCs (no stream pool) Add four bidirectional streaming RPCs — StreamExecuteRaw, BeginStreamExecuteRaw, ReserveStreamExecuteRaw and ReserveBeginStreamExecuteRaw — that forward raw MySQL wire-protocol bytes from vttablet to vtgate, where a RawResultParser decodes them back into sqltypes.Result. This avoids the parse->serialize->deserialize cycle on the vttablet side. The gRPC client opens a fresh bidi stream per query: it sends the request, closes its send side, drains responses until the terminal done=true message, then closes. Stream pooling is intentionally left out of this change and will be added in a follow-up; doing so requires no wire-protocol or server changes. vtgate routing through the raw path is gated behind a new --experimental-raw-streaming flag, which defaults to on for now so the path gets exercised. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:56d5b99
Author:Arthur Schreiber

Merge remote-tracking branch 'upstream/main' into arthur/stream-execute-raw Signed-off-by: Arthur Schreiber <arthur@planetscale.com> # Conflicts: # go/mysql/conn.go # go/vt/proto/queryservice/queryservice.pb.go # go/vt/proto/queryservice/queryservice_grpc.pb.go # go/vt/vttablet/tabletserver/tabletserver.go # proto/queryservice.proto

Commit:e2e08e8
Author:Tim Vaillancourt
Committer:GitHub

`vtgate`: add controls for cross-keyspace reads (#19668) Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

Commit:be89d2c
Author:Thomas Thornton
Committer:GitHub

Add VStream MaxStreamAge (#19800) (#850) Cherry-picked from commit 3da1db263a6124344f3448500c58ae9337dc7178 This adds a new max_stream_age_seconds field to VStreamFlags that allows configuring a maximum duration for VStreams. When set, the server will terminate the stream with UNAVAILABLE after the configured duration (plus a random jitter of +/-10% to spread out reconnections). The implementation is best-effort: if a send to the client is in-flight when the age is reached, the server waits for it to complete before returning. Adapted for slack-22.0 by: - Using slack-22.0's wg.Add(1) + go func() pattern instead of wg.Go() - Proto files properly regenerated with make proto after fixing npm environment Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>

Commit:d17e10b
Author:Matt Lord

Merge remote-tracking branch 'origin/main' into vtorc_ers_primary_tablet_down

Commit:638053b
Author:Matt Lord
Committer:GitHub

VReplication: Add default data protection for cancel/complete on _reverse workflows (#19906) Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:c08a661
Author:Matt Lord
Committer:Matt Lord

Changes from self review Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:bbc0060
Author:Matt Lord
Committer:Matt Lord

Address Codex review feedback Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:2a3c965
Author:vitess-bot[bot]
Committer:GitHub

[release-23.0] proto: fix incorrect flag bits on `RAW` and `ROW_TUPLE` types (#19920) (#19949) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Commit:39af295
Author:vitess-bot[bot]
Committer:GitHub

[release-24.0] proto: fix incorrect flag bits on `RAW` and `ROW_TUPLE` types (#19920) (#19950) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Commit:0c4cf11
Author:Arthur Schreiber
Committer:GitHub

proto: fix incorrect flag bits on `RAW` and `ROW_TUPLE` types (#19920) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Commit:3da1db2
Author:Thomas Thornton
Committer:GitHub

Add VStream MaxStreamAge (#19800) Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com>

Commit:c53e7dd
Author:Matt Lord

Merge remote-tracking branch 'origin/main' into vtorc_ers_primary_tablet_down

Commit:b7f8862
Author:Matt Lord

Address zero value update issue for phi threshold Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:bc7bb3c
Author:Arthur Schreiber
Committer:GitHub

vtgate: expose `BinlogDumpGTID` via gRPC (#19689) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Signed-off-by: Arthur Schreiber <schreiber.arthur@googlemail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

Commit:53eb081
Author:Matt Lord

Merge remote-tracking branch 'origin/main' into vtorc_ers_primary_tablet_down

Commit:9a3646f
Author:Max Englander
Committer:GitHub

movetables mirrortraffic: let read-only queries bypass denied tables (#18775) Signed-off-by: Max Englander <max@planetscale.com> Signed-off-by: Max Englander <max.englander@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

Commit:7b2ad0d
Author:Arthur Schreiber
Committer:GitHub

Update proto/vtgate.proto Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Arthur Schreiber <schreiber.arthur@googlemail.com>

Commit:9ef2f86
Author:Arthur Schreiber

vtgate: fix BinlogDumpGTID validation for filename, position, and zero-value alias - Only require tablet_alias when binlog_filename is set (not position alone) - Treat zero-value TabletAlias as unset using TabletAliasIsZero - Update proto comments to document position >= 4 requirement - Add unit tests for the gRPC path Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:8338e24
Author:Arthur Schreiber

vtgate: clarify BinlogDumpResponse may span multiple messages Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:662dd51
Author:Matt Lord

Move config to Keyspace record Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:ab8296f
Author:Arthur Schreiber

vtgate: expose BinlogDumpGTID via gRPC Add a gRPC endpoint for BinlogDumpGTID at the vtgate level, complementing the MySQL protocol support added in #18731. This allows gRPC clients to stream raw binlog events from a specific keyspace/shard. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:805c191
Author:Matt Lord

Merge remote-tracking branch 'origin/main' into vtorc_ers_primary_tablet_down

Commit:a610566
Author:Tim Vaillancourt
Committer:GitHub

VTTablet: do not return query results on warming reads (#19656) Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

Commit:8f5a43e
Author:Arthur Schreiber
Committer:GitHub

feat: add support for `COM_BINLOG_DUMP_GTID` in the `vtgate` MySQL server (#18731) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

Commit:5551022
Author:Arthur Schreiber

Bidi gRPC stream pooling for *Raw streaming RPCs Make the 4 *Raw streaming RPCs (StreamExecuteRaw, BeginStreamExecuteRaw, ReserveStreamExecuteRaw, ReserveBeginStreamExecuteRaw) bidirectional and pool streams per tablet connection to amortize gRPC stream setup cost. Proto changes: - Add `stream` keyword to request side of all 4 *Raw RPCs - Add `bool done` field to all 4 response messages for query completion signaling (EOF can't be used since the stream is reused) - Add `vtrpc.RPCError error` field to StreamExecuteRawResponse for in-band error reporting Server handlers now loop over requests on a single bidi stream, sending data messages followed by a terminal message with done=true and any error/metadata. Client uses a generic streamPool[T] (mutex + slice) per RPC type to reuse streams across queries. Streams are returned to the pool on successful completion (done=true received) and discarded on transport errors or caller context cancellation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:a489a72
Author:Arthur Schreiber

Replace nonBlock bool with flags uint16 in COM_BINLOG_DUMP_GTID The 2-byte flags field in COM_BINLOG_DUMP_GTID was being decomposed into individual booleans on both the parse and send sides. This replaces `nonBlock bool` with `flags uint16` throughout, passing the raw flags directly instead of reconstructing them. Removes the vitess-invented constants BinlogThroughPosition (0x02) and BinlogThroughGTID (0x04) which conflict with real MySQL flags (USE_HEARTBEAT_EVENT_V2 = 0x02). The proto field changes from `bool non_block = 7` to `uint32 flags = 7`. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:29f9e05
Author:Arthur Schreiber

Remove deprecateEOF from StreamExecuteRaw proto and callback chain vttablet always negotiates CLIENT_DEPRECATE_EOF with MySQL, so the deprecate_eof field in the raw streaming protos was always true. Remove it from the proto definitions, callback signatures, and parser to simplify the code. The RawResultParser now unconditionally expects no mid-stream EOF packets. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:0aae0da
Author:Arthur Schreiber

Add StreamExecuteRaw gRPC for zero-parse MySQL streaming Add *Raw variants of all streaming query RPCs (StreamExecute, BeginStreamExecute, ReserveStreamExecute, ReserveBeginStreamExecute) that forward raw MySQL wire protocol bytes from vttablet to vtgate instead of parsing them into protobuf Result messages. The raw bytes are parsed once in scatter_conn.go via RawResultParser, eliminating the parse→serialize→deserialize cycle on the vttablet side. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:f81e8ae
Author:Arthur Schreiber

Remove unused BinlogDumpRequest proto message The BinlogDumpRequest message was never used by any RPC — only BinlogDumpGTIDRequest is used by the BinlogDumpGTID RPC. Drop the dead definition and update the stale TODO comment reference. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:bab053b
Author:Arthur Schreiber

Remove COM_BINLOG_DUMP support from VTGate/TabletServer CDC layer. GTID-based replication is the modern standard; file/position-based replication is fragile and unnecessary for the CDC path. When a client sends COM_BINLOG_DUMP, VTGate now returns UNIMPLEMENTED. Internal MySQL flavor methods (WriteComBinlogDump, SendBinlogDumpCommand, etc.) are kept since they're used by Vitess's own replication infrastructure. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:61cc350
Author:Arthur Schreiber

Rename to `raw`. Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:4e3dfd6
Author:Arthur Schreiber
Committer:Arthur Schreiber

Merge branch 'main' of https://github.com/vitessio/vitess into arthur/binlog-dump Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:422379f
Author:Matt Lord
Committer:GitHub

VReplication: Add support for binlog_rows_query_log_events (#19441) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: Arthur Schreiber <arthur@planetscale.com>

Commit:ae0234a
Author:Matt Lord
Committer:GitHub

VTOrc: Monitor for flappy / overloaded primaries and PRS->ERS as needed (#19328) Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:d375641
Author:Anshika Vashistha
Committer:anshikavashistha

support DROP CONSTRAINT for named UNIQUE and PRIMARY KEY Signed-off-by: anshikavashistha <anshikav1534@gmail.com>

Commit:aae08be
Author:Matt Lord
Committer:GitHub

VStream: move vstream schema change handling from best effort to reliable (#19204) Signed-off-by: Matt Lord <mattalord@gmail.com>

Commit:e3f4453
Author:Tanjin Xu
Committer:GitHub

[`slack-22.0`]: Merge upstream v22.0.3 (#789) * [release-22.0] Bump to `v22.0.1-SNAPSHOT` after the `v22.0.0` release (#18225) Signed-off-by: Florent Poinsard <florent.poinsard@outlook.fr> Co-authored-by: Florent Poinsard <florent.poinsard@outlook.fr> * [release-22.0] fix: Preserve multi-column TupleExpr in tuple simplifier (#18216) (#18220) Signed-off-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Harshit Gangal <harshit@planetscale.com> * [release-22.0] Properly handle grpc dial errors in the throttler metric aggregation (#18073) (#18231) Signed-off-by: Arthur Schreiber <arthurschreiber@github.com> Signed-off-by: Mohamed Hamza <mhamza15@github.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Mohamed Hamza <mhamza15@github.com> * [release-22.0] test: TestQueryTimeoutWithShardTargeting fix flaky test (#18242) (#18250) Signed-off-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] make sure to give MEMBER OF the correct precedence (#18237) (#18245) Signed-off-by: Andres Taylor <andres@planetscale.com> Co-authored-by: Andrés Taylor <andres@planetscale.com> * [release-22.0] Fix evalengine crashes on unexpected types (#18254) (#18258) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix subquery merging regression introduced in #11379 (#18260) (#18263) Signed-off-by: Arthur Schreiber <arthurschreiber@github.com> Co-authored-by: Andrés Taylor <andres@planetscale.com> * [release-22.0] json array insert test (#18284) (#18286) Signed-off-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Harshit Gangal <harshit@planetscale.com> * [release-22.0] Fix `SET` and `START TRANSACTION` in create procedure statements (#18279) (#18293) Signed-off-by: Manan Gupta <manan@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix deadlock in semi-sync monitor (#18276) (#18290) Signed-off-by: Manan Gupta <manan@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Upgrade the Golang version to `go1.24.3` (#18239) Signed-off-by: GitHub <noreply@github.com> Signed-off-by: Andres Taylor <andres@planetscale.com> Co-authored-by: frouioui <frouioui@users.noreply.github.com> Co-authored-by: Andres Taylor <andres@planetscale.com> * [release-22.0] Atomic Copy: Handle error that was ignored while streaming tables and log it (#18313) (#18316) Signed-off-by: Rohit Nayak <rohit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] fix: handle dml query for None opcode (#18326) (#18345) Signed-off-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Harshit Gangal <harshit@planetscale.com> * [release-22.0] fix: keep LIMIT/OFFSET even when merging UNION queries (#18361) (#18363) Signed-off-by: Andres Taylor <andres@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Andres Taylor <andres@planetscale.com> * [release-22.0] Fix: Deadlock in `Close` and `write` in semi-sync monitor. (#18359) (#18368) Signed-off-by: Manan Gupta <manan@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Upgrade the Golang version to `go1.24.4` (#18329) Signed-off-by: GitHub <noreply@github.com> Signed-off-by: Manan Gupta <manan@planetscale.com> Co-authored-by: frouioui <frouioui@users.noreply.github.com> Co-authored-by: Manan Gupta <manan@planetscale.com> * [release-22.0] fix version issue when using --mysql-shell-speedup-restore=true (#18310) (#18356) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Split workflow with flaky vdiff2 e2e test. Skip flaky Migrate test. (#18300) (#18334) Signed-off-by: Rohit Nayak <rohit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Throttler: keep watching topo even on error (#18223) (#18322) Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Code Freeze for `v22.0.1` (#18374) Signed-off-by: Manan Gupta <manan@planetscale.com> * [release-22.0] Release of `v22.0.1` (#18375) Signed-off-by: Manan Gupta <manan@planetscale.com> * [release-22.0] Bump to `v22.0.2-SNAPSHOT` after the `v22.0.1` release (#18380) Signed-off-by: Manan Gupta <manan@planetscale.com> * [release-22.0] [Bugfix] Broken Heartbeat system in Row Streamer (#18390) (#18398) Signed-off-by: siddharth16396 <siddharth16396@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] test: Fix race condition in TestStreamRowsHeartbeat (#18414) (#18420) Signed-off-by: siddharth16396 <siddharth16396@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Online DDL: resume vreplication after cut-over/RENAME failure (#18428) (#18437) Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Noble Mittal <62551163+beingnoble03@users.noreply.github.com> * [release-22.0] Fix `vttablet` not being marked as not serving when MySQL stalls (#17883) (#18454) Signed-off-by: Arthur Schreiber <arthurschreiber@github.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Topo: Add NamedLock test for zk2 and consul and get them passing (#18407) (#18410) Signed-off-by: Matt Lord <mattalord@gmail.com> Signed-off-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Harshit Gangal <harshit@planetscale.com> * [release-22.0] Reset in-memory sequence info on vttablet on UpdateSequenceTables request (#18415) (#18445) Signed-off-by: Noble Mittal <noblemittal@outlook.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Noble Mittal <noblemittal@outlook.com> * [release-22.0] bugfix: Fix impossible query for UNION (#18463) (#18465) Signed-off-by: Andres Taylor <andres@planetscale.com> Co-authored-by: Andrés Taylor <andres@planetscale.com> * [release-22.0] VReplication: Fix bug while reading _vt.vreplication record (#18478) (#18483) Signed-off-by: Rohit Nayak <rohit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix for simple projection showing no fields (#18489) (#18493) Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com> Signed-off-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Harshit Gangal <harshit@planetscale.com> * [release-22.0] Fix scalar aggregation with literals in empty result sets (#18477) (#18491) Signed-off-by: Andres Taylor <andres@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix watcher storm during topo outages (#18434) (#18440) Signed-off-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: Harshit Gangal <harshit@planetscale.com> * [release-22.0] Avoid terminating atomic copy workflows on error if they are out of copy phase (#18475) (#18487) Signed-off-by: Noble Mittal <noblemittal@outlook.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Bump @babel/runtime from 7.26.0 to 7.27.6 in /web/vtadmin (#18467) (#18502) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [release-22.0] Bump vite from 4.5.9 to 4.5.14 in /web/vtadmin (#18485) (#18500) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [release-22.0] Fix regression in v22 around new flag setup (#18507) (#18509) Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Bump form-data from 4.0.1 to 4.0.4 in /web/vtadmin (#18473) (#18504) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [release-22.0] bugfix: Plan group by only on top of derived tables correctly (#18505) (#18511) Signed-off-by: Andres Taylor <andres@planetscale.com> Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Dirkjan Bussink <d.bussink@gmail.com> * [release-22.0] Fix GetSchema RPC to prevent returning view definitions when EnableViews is disabled (#18513) (#18517) Signed-off-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] CI: Fix `VDiff2` flaky e2e test (#18494) (#18526) Signed-off-by: Noble Mittal <noblemittal@outlook.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix foreign key relation with routed tables (#18537) (#18541) Signed-off-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Try updating the create PR workflow step (#18563) (#18571) Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix a panic in VDiff when reconciling extra rows. (#18585) (#18596) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] fix: remove database qualifier after building query in operator to sql (#18602) (#18605) Signed-off-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Introduce aliases for foreign keys verify operations (#18601) (#18614) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> * [release-22.0] [CI] Use the draft state from the event payload instead of calling `curl`. (#18650) (#18652) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] fix: Fix `GenerateShardRanges` returning shard names that don't cover the full range (#18641) (#18654) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Arthur Schreiber <arthur@planetscale.com> * [release-22.0] Fix: Improve VDiff internal query performance (#18579) (#18632) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Arthur Schreiber <arthur@planetscale.com> * [release-22.0] Simplify workflow files. (#18649) (#18656) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> * [release-22.0] ci: Replace `always()` with `!cancelled()`. (#18659) (#18662) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] ci: Disable man-db auto updates. (#18665) (#18668) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] ci: Bump `actions/setup-go` to `v5.5.0`. (#18660) (#18670) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Update codeowners and maintainers. (#18676) * [release-22.0] Upgrade the Golang version to `go1.24.7` (#18621) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Nick Van Wiggeren <nick@planetscale.com> Co-authored-by: frouioui <35779988+frouioui@users.noreply.github.com> Co-authored-by: Nick Van Wiggeren <nick@planetscale.com> * [release-22.0] ci: don't run codecov twice. (#18680) (#18682) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Update CODEOWNERS (#18697) (#18699) Signed-off-by: Arthur Schreiber <arthurschreiber@github.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] fix: ensure callbacks are not called after `VStream` returns (#18689) (#18705) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> * [release-22.0] CONNPOOL: Fix race condition when waiting for connection (#18713) (#18721) Signed-off-by: Arthur Schreiber <arthurschreiber@github.com> Signed-off-by: Matt Lord <mattalord@gmail.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Matt Lord <mattalord@gmail.com> Co-authored-by: Arthur Schreiber <arthur@planetscale.com> * [release-22.0] connpool: Bump the hang detection timeout to fix flakiness (#18722) (#18724) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix handling of tuple bind variables in filtering operations. (#18736) (#18746) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Potential fix for code scanning alert no. 2992: Clear-text logging of sensitive information (#18754) (#18759) Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Matt Lord <mattalord@gmail.com> * [release-22.0] update java packages to use central instead of ossrh (#18765) (#18766) Signed-off-by: Florent Poinsard <florent.poinsard@outlook.fr> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] VReplication: Ensure proper handling of keyspace/database names with dashes (#18762) (#18772) Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Matt Lord <mattalord@gmail.com> * [release-22.0] Resolve `commons-lang` vulnerability in Java driver (#18768) (#18796) Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] ci: use the newest mysql apt config package (#18790) (#18793) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> Co-authored-by: Arthur Schreiber <arthur@planetscale.com> * [release-22.0] `vtctldclient GetPermissions`: hide `authentication_string` from response (#18771) (#18798) Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Tim Vaillancourt <tim@timvaillancourt.com> * [release-22.0] repltracker: reset replica lag when we are primary (#18800) (#18806) Signed-off-by: Nick Van Wiggeren <nick@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Address dir traversal in file backup storage `GetBackups` RPC (#18814) (#18817) Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] VReplication: Treat ER_BINLOG_CREATE_ROUTINE_NEED_SUPER as unrecoverable (#18784) (#18819) Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Upgrade the Golang version to `go1.24.9` (#18737) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Nick Van Wiggeren <nick@planetscale.com> Co-authored-by: frouioui <35779988+frouioui@users.noreply.github.com> Co-authored-by: Nick Van Wiggeren <nick@planetscale.com> * [release-22.0] vtadmin: upgrade vite to the latest (#18803) (#18811) Signed-off-by: Nick Van Wiggeren <nick@planetscale.com> Co-authored-by: Nick Van Wiggeren <nickvanw@users.noreply.github.com> * [release-22.0] Fix bug where query consolidator returns empty result without error when the waiter cap exceeded (#18782) (#18832) Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Stas Maksimov <maksimov@gmail.com> Co-authored-by: Tim Vaillancourt <tim@timvaillancourt.com> * [release-22.0] ci: extract os tuning (#18824) (#18826) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> * [release-22.0] ci: DRY up MySQL Setup (#18815) (#18836) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> * [release-22.0] Fix flaky tests (#18835) (#18838) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> * [release-22.0] copy_state: use a mediumblob instead of a smaller varbinary for lastpk (#18852) (#18858) Signed-off-by: Nick Van Wiggeren <nick@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] BuiltinBackupEngine: Retry file close and fail backup when we cannot (#18848) (#18861) Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] fix sqlSelectLimit propagating to subqueries (#18716) (#18872) Signed-off-by: ghostframe <marcosandresdiaz@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Code Freeze for `v22.0.2` (#18876) Signed-off-by: Matt Lord <mattalord@gmail.com> * [release-22.0] Release of `v22.0.2` (#18878) Signed-off-by: Matt Lord <mattalord@gmail.com> * [release-22.0] Bump to `v22.0.3-SNAPSHOT` after the `v22.0.2` release (#18881) Signed-off-by: Matt Lord <mattalord@gmail.com> * [release-22.0] Improve Semi-Sync Monitor Behavior to Prevent Errant ERS (#18884) (#18906) Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Matt Lord <mattalord@gmail.com> * [release-22.0] Bump js-yaml from 4.1.0 to 4.1.1 in /web/vtadmin (#18908) (#18910) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [release-22.0] Upgrade the Golang version to `go1.24.10` (#18897) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: frouioui <35779988+frouioui@users.noreply.github.com> Co-authored-by: Matt Lord <mattalord@gmail.com> * [release-22.0] `vtbench`: add `--db-credentials-*` flags (#18913) (#18921) Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Properly Strip Keyspace Table Qualifiers in FK Constraints (#18926) (#18934) Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Matt Lord <mattalord@gmail.com> * [release-22.0] Stop using Equinix Metal self hosted runners (#18942) (#18943) Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Drop dependency on `npm`, bump version of `glob`. (#18931) (#18957) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Don't hardcode the go version to use for upgrade/downgrade tests. (#18920) (#18955) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> * [release-22.0] connpool: fix connection leak during idle connection reopen (#18967) (#18970) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> * [release-22.0] Potential fix for code scanning alert no. 3944: Database query built … (#18962) Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> * [release-22.0] vdiff: do not sort by table name in summary, it is not necessary (#18972) (#18977) Signed-off-by: Nick Van Wiggeren <nick@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] VDiff: Handle the case where a workflow's table has been dropped on the source (#18985) (#18988) Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] CI: Improve reliability of codecov workflow with larger runner (#18992) (#18994) Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Change connection pool idle expiration logic (#19004) (#19013) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> Co-authored-by: Arthur Schreiber <arthur@planetscale.com> * [release-22.0] `ci`: use `etcd` v3.5.25, add retries (#19015) (#19021) Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Tim Vaillancourt <tim@timvaillancourt.com> * [release-22.0] Bump org.apache.logging.log4j:log4j-core from 2.24.1 to 2.25.3 in /java (#19063) (#19065) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [release-22.0] Skip flaky `TestRedial` test (#19106) (#19107) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] binlog_json: fix opaque value parsing to read variable-length (#19102) (#19109) Signed-off-by: Nick Van Wiggeren <nick@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] vschema revert: initialize as nil so that nil checks do not pass later (#19114) (#19117) Signed-off-by: Nick Van Wiggeren <nick@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix `ReloadSchema` incorrectly using `DisableBinlogs` value in `grpctmclient` (#19085) (#19129) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix cross shard/keyspace joins with derived tables containing a `UNION`. (#19046) (#19136) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Arthur Schreiber <arthur@planetscale.com> * [release-22.0] workflows: avoid accidental deletion to routing rules (#19121) (#19135) Signed-off-by: Nick Van Wiggeren <nick@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * Pin GitHub Actions and Docker images by hash (#19151) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix column offset tracking for `UNION`s to be case insensitive. (#19139) (#19161) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Arthur Schreiber <arthur@planetscale.com> * [release-22.0] VDiff: Prevent division by 0 when reconciling mismatches for reference tables (#19160) (#19164) Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Matt Lord <mattalord@gmail.com> * [release-22.0] CI: Look for expected log message rather than code in Backup tests (#19199) (#19200) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Update go-upgrade to update docker image digests (#19178) (#19188) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Mohamed Hamza <mhamza@fastmail.com> * [release-22.0] Fix sporadic TestServingKeyspaces panic on context cancellation (#19163) (#19186) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Fix major upgrade logic in go upgrade tool (#19211) * [release-22.0] CI: Use new Percona Server repo name (#19221) Signed-off-by: Matt Lord <mattalord@gmail.com> * [release-22.0] Fix go upgrade workflow (#19216) (#19219) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Upgrade the Golang version to `go1.24.12` (#19222) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Matt Lord <mattalord@gmail.com> Co-authored-by: frouioui <35779988+frouioui@users.noreply.github.com> * [release-22.0] VReplication: Properly Handle Sequence Table Initialization For Empty Tables (#19226) (#19227) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Matt Lord <mattalord@gmail.com> * [release-22.0] `vtorc`: detect errant GTIDs for replicas not connected to primary (#19224) (#19233) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Add new `force` flag to `DemotePrimary` to force a demotion even when blocked on waiting for semi-sync acks (#18714) (#19238) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Mohamed Hamza <mhamza@fastmail.com> * [release-22.0] vtorc: add `StaleTopoPrimary` analysis and recovery (#19173) (#19236) Co-authored-by: Mohamed Hamza <mhamza@fastmail.com> * [release-22.0] switch end-to-end tests to gotestsum (#19182) (#19244) * [release-22.0] evalengine: make `JSON_EXTRACT` work with non-static arguments (#19035) (#19253) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] Escape control bytes in JSON strings (#19270) (#19274) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> * [release-22.0] evalengine: Fix `NULL` document handling in JSON functions (#19052) (#19230) Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> * [release-22.0] Code Freeze for `v22.0.3` (#19281) Signed-off-by: Matt Lord <mattalord@gmail.com> * [release-22.0] Release of `v22.0.3` (#19282) Signed-off-by: Matt Lord <mattalord@gmail.com> * Fix remaining conflict markers in CHANGELOG.md Removed conflict markers that were accidentally committed during merge. Both entries are now properly included: 43.5 (golang 1.24.10) and 43.6 (golang 1.24.12). Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add back GitHub access token setup to vtadmin workflows Re-added the GitHub access token configuration step to both vtadmin workflows that was lost during the v22.0.3 merge. This step is required for accessing private Slack repositories during the build process. Files updated: - .github/workflows/check_make_vtadmin_authz_testgen.yml - .github/workflows/check_make_vtadmin_web_proto.yml Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add back GitHub access token setup to e2e_race workflow Re-added the GitHub access token configuration step to e2e_race.yml that was lost during the v22.0.3 merge. This step is required for accessing private Slack repositories during the build process. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add back GitHub access token setup to endtoend workflow Re-added the GitHub access token configuration step to endtoend.yml that was lost during the v22.0.3 merge. This step is required for accessing private Slack repositories during the build process. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add back GitHub access token setup to unit_test_mysql57 workflow Re-added the GitHub access token configuration step to unit_test_mysql57.yml that was lost during the v22.0.3 merge. This step is required for accessing private Slack repositories during the build process. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add back GitHub access token setup to unit_test_evalengine_mysql57 workflow Re-added the GitHub access token configuration step to unit_test_evalengine_mysql57.yml that was lost during the v22.0.3 merge. This step is required for accessing private Slack repositories during the build process. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add GOPRIVATE env variable to MySQL 57 workflow files Added GOPRIVATE environment variable to specify private Go module repositories for both MySQL 57 unit test workflows. This ensures Go can properly access the private slackhq/vitess-addons repository during builds. Files updated: - .github/workflows/unit_test_mysql57.yml - .github/workflows/unit_test_evalengine_mysql57.yml Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add GOPRIVATE env and GitHub access token to java_docker_test workflow Added both the GOPRIVATE environment variable and GitHub access token configuration step to java_docker_test.yml. These are required for accessing private Slack repositories during the Java Docker test builds. Changes: - Added GOPRIVATE env variable for slackhq/vitess-addons - Added GitHub access token setup step after Set up Go Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add GOPRIVATE env and GitHub access token to docker_test_cluster workflow Added both the GOPRIVATE environment variable and GitHub access token configuration step to docker_test_cluster.yml. These are required for accessing private Slack repositories during the Docker cluster test builds. Changes: - Added GOPRIVATE env variable for slackhq/vitess-addons - Added GitHub access token setup step after Set up Go Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * fix docker test file Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * fix test Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * fix test runner Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * fix test Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * fix test Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * udpate tests Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Revert query_executor files to pre-merge Slack version Restored query_executor.go and query_executor_test.go to their state before the v22.0.3 merge to preserve Slack-specific customizations and avoid compatibility issues with upstream changes. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Revert vstream_manager files to pre-merge Slack version Restored vstream_manager.go and vstream_manager_test.go to their state before the v22.0.3 merge to preserve critical Slack-specific features: - Transaction chunking to prevent OOM (Out Of Memory) issues with large transactions - Stream liveness monitoring to detect dead streams - Enhanced metrics (vstreamsTransactionsChunked counter) - Detailed VStream flags logging for debugging These features were added to improve reliability and observability of VStream operations and should not be lost in the merge. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Revert smartconnpool waitlist changes from v22.0.3 merge Reverted go/pools/smartconnpool/waitlist.go to pre-merge version and removed the new semaphore implementation files (sema.s, sema_norace.go, sema_race.go). The upstream changes replaced the channel-based waiter implementation with a semaphore-based approach. Reverting to preserve the Slack version's channel implementation. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add Slack-specific configs to upgrade_downgrade test workflows Updated all 16 upgrade_downgrade test workflows with: - runs-on: vitess-ubuntu24-16cpu-1 (Slack's custom runner) - GOPRIVATE and GH_ACCESS_TOKEN environment variables - GitHub access token setup step before Set up python This ensures proper access to private Slack repositories during CI. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Revert selected upgrade_downgrade workflow files to pre-merge version Reverted 7 workflow files to their state before the v22.0.3 merge to preserve Slack-specific configurations that were present in the original version: - upgrade_downgrade_test_backups_e2e.yml - upgrade_downgrade_test_backups_e2e_next_release.yml - upgrade_downgrade_test_backups_manual_next_release.yml - upgrade_downgrade_test_query_serving_queries_next_release.yml - upgrade_downgrade_test_query_serving_queries_2_next_release.yml - upgrade_downgrade_test_query_serving_schema_next_release.yml - upgrade_downgrade_test_reparent_new_vtctl.yml These files had custom configurations that need to be maintained in the Slack fork. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Revert upgrade_downgrade_test_reparent_new_vttablet.yml to pre-merge version Reverted .github/workflows/upgrade_downgrade_test_reparent_new_vttablet.yml to its state before the v22.0.3 merge to preserve Slack-specific configurations. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Revert CODEOWNERS to Slack version Replaced upstream CODEOWNERS with Slack-specific version that assigns all files to @slackhq/vitess-approvers. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Revert vstream_test.go to pre-merge Slack version Reverted go/test/endtoend/vreplication/vstream_test.go to its state before the v22.0.3 merge to preserve Slack-specific test configurations. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Revert Dockerfiles to pre-merge Slack version Reverted docker/lite/Dockerfile.mysql84 and docker/lite/Dockerfile.percona80 to their state before the v22.0.3 merge to preserve Slack-specific configurations: - Use golang:1.24.10-bookworm (without SHA pinning) - Use debian:bookworm-slim (without SHA pinning) - Restore GH_ACCESS_TOKEN setup for private repository access - Restore GOPRIVATE environment variable for github.com/slackhq/vitess-addons Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * update test Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * update test runner Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add Slack private repo configuration to vttestserver Dockerfiles Restore GitHub access token and GOPRIVATE settings needed for accessing Slack's private vitess-addons repository during Docker builds. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * update tests Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * update tests Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Fix duplicate vtgate_schematracker_viewsdisabled test configuration Remove duplicate test entry that was missing the Packages field and causing 'ERROR: PACKAGES is empty' test failures. Merged RetryMax field from the duplicate into the correct entry. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Fix additional duplicate test configurations Remove duplicate entries for vtgate_foreignkey_routing and vreplication_sequence_reset_on_switch_traffic that were missing the Packages field. Merged RetryMax field from duplicates. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Disable MySQL 5.7 unit tests for Slack branches Add branches-ignore pattern to exclude slack-[0-9]+.[0-9] branches from MySQL 5.7 unit test workflows since Slack no longer supports MySQL 5.7. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Fix workflow syntax: add missing env keyword for environment variables Three workflow files were missing the 'env:' keyword before their environment variable declarations, causing the workflows to be invalid and preventing tests from running. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Update vtop_example workflow to use vitess runner Change from oracle-vm-8cpu-32gb-x86-64 to vitess-ubuntu24-16cpu-1 to align with other workflows in the repository. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Fix GitHub access token setup condition in local_example workflow The Setup GitHub access token step was checking for 'end_to_end' filter output, but the paths-filter only defines 'examples'. This mismatch caused the step to be skipped, preventing authentication for downloading the private vitess-addons module. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add GitHub access token setup to vtop_example workflow Add GOPRIVATE and GH_ACCESS_TOKEN environment variables, and add the Setup GitHub access token step to authenticate for downloading the private vitess-addons module. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Pass GitHub access token to Docker build in vtop_example test The vtop_example test builds a Docker image using docker/lite/Dockerfile, which needs to authenticate to download the private vitess-addons module. Pass GH_ACCESS_TOKEN as a build argument so the Dockerfile can configure git authentication. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Add GitHub access token setup to bootstrap Docker image The bootstrap Docker image is used for Java tests and needs to authenticate to download the private vitess-addons module during go mod download. Add GH_ACCESS_TOKEN build arg handling and git config setup. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Update cluster_endtoend_xb_backup workflow to use vitess runner Change from ubuntu-24.04 to vitess-ubuntu24-16cpu-1 runner. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * regen workflows Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> * Update vitess-addons to v0.22.3 and remove wrapper Upgrade github.com/slackhq/vitess-addons from v0.22.1 to v0.22.3. The new version implements HasSemiSync() directly in SlackCrossCell, so the slackCrossCellWrapper is no longer needed. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> --------- Signed-off-by: Florent Poinsard <florent.poinsard@outlook.fr> Signed-off-by: Harshit Gangal <harshit@planetscale.com> Signed-off-by: Arthur Schreiber <arthurschreiber@github.com> Signed-off-by: Mohamed Hamza <mhamza15@github.com> Signed-off-by: Andres Taylor <andres@planetscale.com> Signed-off-by: Manan Gupta <manan@planetscale.com> Signed-off-by: GitHub <noreply@github.com> Signed-off-by: Rohit Nayak <rohit@planetscale.com> Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Signed-off-by: siddharth16396 <siddharth16396@gmail.com> Signed-off-by: Matt Lord <mattalord@gmail.com> Signed-off-by: Noble Mittal <noblemittal@outlook.com> Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com> Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Arthur Schreiber <arthur@planetscale.com> Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Nick Van Wiggeren <nick@planetscale.com> Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com> Signed-off-by: Tanjin Xu <tanjin.xu@slack-corp.com> Signed-off-by: ghostframe <marcosandresdiaz@gmail.com> Co-authored-by: vitess-bot <139342327+vitess-bot@users.noreply.github.com> Co-authored-by: Florent Poinsard <florent.poinsard@outlook.fr> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Harshit Gangal <harshit@planetscale.com> Co-authored-by: Mohamed Hamza <mhamza15@github.com> Co-authored-by: Andrés Taylor <andres@planetscale.com> Co-authored-by: frouioui <frouioui@users.noreply.github.com> Co-authored-by: Manan Gupta <manan@planetscale.com> Co-authored-by: Manan Gupta <guptamanan100@gmail.com> Co-authored-by: Noble Mittal <62551163+beingnoble03@users.noreply.github.com> Co-authored-by: Noble Mittal <noblemittal@outlook.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dirkjan Bussink <d.bussink@gmail.com> Co-authored-by: Arthur Schreiber <arthurschreiber@github.com> Co-authored-by: Arthur Schreiber <arthur@planetscale.com> Co-authored-by: frouioui <35779988+frouioui@users.noreply.github.com> Co-authored-by: Nick Van Wiggeren <nick@planetscale.com> Co-authored-by: Matt Lord <mattalord@gmail.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Tim Vaillancourt <tim@timvaillancourt.com> Co-authored-by: Nick Van Wiggeren <nickvanw@users.noreply.github.com> Co-authored-by: Stas Maksimov <maksimov@gmail.com> Co-authored-by: Mohamed Hamza <mhamza@fastmail.com> Co-authored-by: Claude <svc-devxp-claude@slack-corp.com>

Commit:73edc90
Author:Thomas Thornton
Committer:GitHub

V22 cdc backports round two (#784) * Improve cgroup metric management (#18791) Signed-off-by: Matt Lord <mattalord@gmail.com> Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com> * VStream: Prevent buffering entire transactions (OOM risk), instead send chunks to client (#18849) Signed-off-by: twthorn <thomaswilliamthornton@gmail.com> Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com> * Run VStream copy only when VGTID requires it, use TablesToCopy in those cases (#18938) Signed-off-by: twthorn <thomaswilliamthornton@gmail.com> Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com> Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com> * Regenerate vtgate.pb.go proto file Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com> * Fix tests Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com> * Complete PR #18791 backport: Update metrics_cgroup.go Apply missing changes from PR #18791 to metrics_cgroup.go: - Replace cgroup1Manager and cgroup2Manager with single cgroupManager - Add errCgroupMetricsNotAvailable error variable - Add sync.Once for lazy initialization - Remove cgroup v1 support, only support cgroup v2 - Simplify implementation with unified cgroup manager This fixes compilation errors in metrics_cgroup_test.go. * Add missing github.com/containerd/cgroups dependency Required by metrics_cgroup.go for cgroup v1/v2 support. Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com> * Fix cgroups import to use v3 The v1 cgroups package is incompatible with Go 1.24.10. Use cgroups/v3 consistently throughout the file. Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com> * Fix goimports formatting Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com> --------- Signed-off-by: Thomas Thornton <thomaswilliamthornton@gmail.com>

Commit:c864604
Author:vitess-bot[bot]
Committer:GitHub

[release-22.0] Add new `force` flag to `DemotePrimary` to force a demotion even when blocked on waiting for semi-sync acks (#18714) (#19238) Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:5cb54e2
Author:vitess-bot[bot]
Committer:GitHub

[release-23.0] Add new `force` flag to `DemotePrimary` to force a demotion even when blocked on waiting for semi-sync acks (#18714) (#19239) Signed-off-by: Mohamed Hamza <mhamza@fastmail.com> Co-authored-by: vitess-bot[bot] <108069721+vitess-bot[bot]@users.noreply.github.com> Co-authored-by: Mohamed Hamza <mhamza@fastmail.com>

Commit:4b6db76
Author:Arthur Schreiber

Implement file/pos based binlog dump support. Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:b79851d
Author:Arthur Schreiber

Add support for `BINLOG_DUMP_NON_BLOCK`. Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

Commit:10725b5
Author:Arthur Schreiber
Committer:Arthur Schreiber

feat: Add binlog streaming support via VTGate Implements direct binlog streaming from MySQL through VTGate, allowing CDC tools to connect to VTGate using MySQL replication protocol. - Add BinlogDump RPC to QueryService interface - Implement COM_BINLOG_DUMP_GTID handler in VTGate - Stream raw MySQL packets through gRPC to clients - Support tablet targeting via USE statement or username format - Add graceful shutdown handling for long-lived streams - Add end-to-end test for binlog dump functionality Signed-off-by: Arthur Schreiber <arthur@planetscale.com>