feat(mysql): classify removed 8.4 parameters#3224
Draft
weicao wants to merge 4 commits into
Draft
Conversation
Previously only ERROR 1045 failed the reconfigure exec action; every other error (unknown variable, invalid value, connection failure) was silently ignored and the Ops reported success while the running value never changed. Now tolerate exactly the two legitimate cannot-apply- online cases with explicit logs (1238 read-only -> effective after restart via rendered my.cnf; 1193 on loose_-prefixed params -> plugin not loaded), and exit non-zero on everything else. loose_ prefix strip is now anchored to the prefix instead of a global substitution. Fixes #3079 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
10 cases: numeric/suffix/quoting/dash-normalization apply paths with query capture, tolerated 1238 and loose_+1193 paths, and hard-failure paths (bare 1193, 1231, 1045, 2003). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A reconfigure of a variable removed in MySQL 8.4 (expire_logs_days, master_info_repository, etc.) previously fell through to the config file path and landed in my.cnf, crash-looping 8.4 on restart. Reject such a request by name before SET GLOBAL when the server is >= 8.4, with a clear reason surfaced in the action output. The SET GLOBAL unknown-variable error remains a backstop; 8.0 keeps the legacy variables valid. Adds ShellSpec coverage for 8.4-reject / 8.4-accept-non-removed / 8.0-legacy. Refs #3085 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## helios/mysql-84-paramsdef #3224 +/- ##
==========================================================
Coverage 0.00% 0.00%
==========================================================
Files 147 149 +2
Lines 23282 23459 +177
==========================================================
- Misses 23282 23459 +177 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
leon-ape
marked this pull request as draft
July 20, 2026 02:53
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
KubeBlocks controller PR #10684 adds an opt-in action result policy for deterministic rejected parameters. MySQL 8.4 already rejects a fixed set of removed variables before
SET GLOBAL, but that path currently shares generic exit code 1 with authentication, connection, probe, unknown-variable, and other execution failures. Mapping exit 1 would therefore misclassify infrastructure or engine errors asInvalidParameter.Change
InvalidParameterwithretry: falsein the shared reconfigure actionThis PR is stacked on #3086 (
helios/mysql-84-paramsdef) and includes the three commits from #3080 that provide the generic error and removed-variable foundation.TDD evidence
Before the product patch, the focused suite was
22 examples / 9 failures: all eight removed-variable cases returned 1 instead of 64 and the seven rendered actions had no result mapping.After the patch:
23 examples / 0 failures29 examples / 0 failures[{execExitCode: 64, code: InvalidParameter, retry: false}]git diff --check: PASSRuntime boundary
Runtime is
N=0 / NOT_RUN. Acceptance requires controller manager and Pod kbagent sidecar built from the exact same #10684 head, then the focused MySQL 8.4 rejected-parameter rollback and subsequent valid reconfigure checks.