Add an enterprise-candidate MySQL profile - #2
Merged
Conversation
Resolve environment-referenced credentials independently before each driver planning request and each worker connection attempt, without serializing resolved values. Add private-CA query planning, an independent query-plan timeout, and fixed redacted MySQL TLS error classification. Authentication, permission, TLS, and missing-credential failures fail closed without transport fallback. Move distributed worker-retry and backend-failure evidence to the minimum-privilege MySQL path with strict TLS, and bind releases to a successful full slow-suite manifest from the exact candidate SHA and workflow run, recording the initial cluster topology in the manifest. Document the logical FE endpoint contract and keep FE election, quorum, and backend failover as deployment concerns. Signed-off-by: jiangxt2 <jiangxt2@vip.qq.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.
What changes
This PR adds an enterprise-candidate MySQL profile to
ray-doris:password_envstores only an environment-variable name in the serialized datasource and ReadTask payloads. The driver resolves the value before eachDESCRIBEand query-plan request, and a worker resolves it again before every split connection attempt, so Ray retries never reuse a stale credential. It is mutually exclusive with a non-empty literalpassword. An unavailable variable raises a fixed, redactedDorisConfigurationErrorbefore the affected driver request or worker connection attempt, and the resolved value is never written back into the serialized configuration.http_ca_fileloads a private CA into a hostname-verifying TLS context for the_query_planendpoint and is valid only withhttp_scheme="https"; there is no trust-all or hostname-bypass option.query_plan_timeoutbounds query-plan request I/O independently and defaults toconnect_timeoutfor compatibility.single_taskor transportautofallback. Sensitive failure tests assert four-layer redaction (message, formatted traceback chain, captured logs, and absent__cause__).SELECT_PRIVreader with strict TLS; Flight remains an experimental regression path.Why
Literal passwords remained in serialized datasource and task state. The query-plan endpoint had no private-CA option and shared
connect_timeoutwith other setup operations. MySQL TLS failures were not consistently classified. Distributed worker-retry and backend-failure evidence lived on the experimental Flight path with the root account. Releases were not bound to slow-suite evidence, so a commit without a successful full slow run could be published.User-facing changes
Three optional parameters are added with backward-compatible defaults:
password_env,http_ca_file, andquery_plan_timeout. The enterprise-candidate MySQL profile combinespassword_envwith strict MySQL TLS, HTTPS query planning with hostname verification,on_query_plan_error="error", explicit timeouts, and a minimum-privilege reader. The connector accepts one logical FE hostname and does not discover FE members or fail over between endpoints. An unavailable environment credential fails before the affected driver request or worker connection attempt; all TLS, authentication, and permission failures produce fixed, redacted public errors and never degrade to an unencrypted or fallback path.How tested
git diff --checkall passed.fullrun on the exact release SHA is a release gate.tools/check_slow_result.pyis unit-tested for exact-SHA, run-ID, profile, and topology binding; the full release dry-run follows the candidate slow run.This PR does not implement FE discovery, leader election, quorum, health checks, or cross-endpoint failover; it does not change tablet grouping, add SQL or type capabilities, or modify branch protection, tag rulesets, or release environments.