fix(mysql): dedicated 8.4 ParametersDefinition rejecting 8.4-removed variables#3086
Draft
weicao wants to merge 4 commits into
Draft
fix(mysql): dedicated 8.4 ParametersDefinition rejecting 8.4-removed variables#3086weicao wants to merge 4 commits into
weicao wants to merge 4 commits into
Conversation
…variables Port the apecloud-addons paramsdef-84 structure (shared 8.0 cue + a #MysqlParameter unification patch) and extend the rejection from default_authentication_plugin alone to all MySQL 8.4.0-removed system variables; filter them out of the static/dynamic/immutable lists too. Narrow paramsdef-80's componentDef regex to 8.0 only. Also correct the 8.0 cue entry for expire_logs_days to MySQL's real range 0-99 (default 0) instead of binlog_expire_logs_seconds' default. Fixes #3085 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3086 +/- ##
=====================================
Coverage 0.00% 0.00%
=====================================
Files 144 144
Lines 23013 23013
=====================================
Misses 23013 23013 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
The _|_ (CUE bottom) used to reject MySQL 8.4-removed variables cannot be marshaled into an OpenAPI schema by KB 1.2.0-alpha.2, so mysql-8.4-pd never became Available and 8.4 clusters could not provision at all - a regression worse than the original shared-schema problem. Drop the bottom override so the PD reuses the (range-corrected) 8.0 CUE and becomes Available. The 8.4-removed variables remain filtered out of the static/dynamic/immutable classification lists, and a user reconfigure of them is rejected at runtime by update-parameter.sh fail-close on the SET GLOBAL unknown-variable error. Strict PD schema-level rejection (closing the open CUE struct) is deferred as a separate enhancement. Refs #3085 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The appended #MysqlParameter{} block (added to declare authentication_policy
and, earlier, to bottom removed vars) re-declares the definition, which
closes the otherwise-open (...) shared struct. A closed #MysqlParameter is
then applied strictly to every ini section via [SectionName=_], so the
[client] section's rendered port="3306" (string) conflicts with the
schema's port?: int, failing 8.4 ComponentParameter rendering and blocking
8.4 provisioning. 8.0-pd never hit this because it has no such block. Reuse
the shared 8.0 cue verbatim: the open struct already accepts
authentication_policy, and removed-variable rejection stays at the runtime
fail-close layer plus classification-list filtering.
Refs #3085
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…mic to action) Filtering the removed variables out of all classification lists left them unclassified, so KB routed them to the config-file (static) path where they landed in my.cnf and crash-looped 8.4. Keep the 8.0 classification instead: the six DYNAMIC removed variables route to update-parameter.sh, which now rejects them by name (fail-close before write). The two STATIC removed variables take the file path with no action to intercept them - a documented schema-only gap pending a KB forbidden-parameter mechanism. Refs #3085 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Fixes #3085.
Ports the enterprise
paramsdef-84.yamlstructure and extends it:mysql-8.4-pdbound to^mysql(?:-mgr)?-8\.4-<chart>$;mysql-8.0-pdregex narrowed to 8.0 only.#MysqlParameterpatch that bottoms (_|_) all 8 variables removed in MySQL 8.4.0 (enterprise rejects onlydefault_authentication_plugin; the review thread acknowledged the residual risk — this closes it) and admitsauthentication_policy.expire_logs_dayscorrected to?: int & >=0 & <=99 | *0(real MySQL range; old entry carried binlog_expire_logs_seconds' default — the 5.7 cue was already correct). Field made optional, which the 8.4 bottom-override also requires.Render-verified:
helm templatepasses;mysql-8.4-pdlists contain none of the removed variables (the only near-match isbinlog_transaction_dependency_history_size, which still exists in 8.4 and is intentionally kept);mysql-8.0-pdlists keep them.Runtime validation before undraft: on 8.4 — reconfigure
expire_logs_daysmust be REJECTED by schema, reconfigurebinlog_expire_logs_secondsmust succeed, pod restart stays healthy; on 8.0 — both still accepted; upgrade path from a cluster created before the split re-binds cleanly.🤖 Generated with Claude Code