[Build] Establish the StreamPark 3.0 architecture baseline - #4512
Merged
wolfboys merged 9 commits intoSep 4, 2026
Merged
Conversation
GOODBOY008
previously approved these changes
Sep 4, 2026
|
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.



Purpose
This PR establishes a clean architecture baseline for StreamPark 3.0.
The change intentionally removes obsolete modules, duplicated implementations, unused dependencies, and historical compatibility layers. It also rebuilds several core boundaries so that subsequent backend, frontend, and runtime improvements can be developed on a simpler and more maintainable foundation.
This is a deliberate 3.0 cleanup. Deprecated internal structures are removed instead of being carried forward indefinitely.
Major Changes
1. Simplify the module structure
streampark-spark-climodule.streampark-flink-udfmodule.FlinkShimsProxyinto the Flink client API and remove the standalonestreampark-flink-proxymodule.streampark-common-scala-bridgeto the clearerstreampark-scalamodule.2. Retire the legacy E2E implementation
streampark-e2emodules and replace their workflow with a temporary required-check compatibility job.The removal is intentional and temporary at the project level. A new E2E workflow will be designed around the refactored architecture.
3. Rebuild the common configuration framework
Replace the historical
common.confimplementation with a typed and immutable configuration model undercommon.configuration.The new configuration framework provides:
ConfigOptiondeclarations.Common configuration remains independent of Flink and Spark runtime APIs.
4. Fix Flink configuration compatibility
Reimplement Flink configuration discovery and parsing according to the target Flink version instead of the StreamPark compile-time Flink version.
The supported behavior is:
flink-conf.yamlwith the legacy Flink line parser.flink-conf.yamlwhen both files exist.flink-conf.yamluses legacy parsing, whileconfig.yamluses standard YAML parsing.config.yamlwith standard nested YAML parsing.This resolves the historical compatibility issues when StreamPark manages Flink 1.x and 2.x installations from the same deployment.
5. Consolidate the Flink shims architecture
streampark-flink-shims-base-v2module.registerDataStreamand table-functionregisterFunctionoverloads only in compatible Flink 1.x implementations.No general utilities or target-independent configuration logic are placed in the shims layer.
6. Clarify Console responsibilities
SpringConfigurationInitializer.7. Improve HTTP client and proxy handling
8. Improve repository and developer tooling
9. Improve maintainability
AGENTS.mdto describe the current module boundaries and architecture rules.10. Harden the Flink client submission path
FlinkConfigurationOps.setIfPresentwrapper and apply typed Flink options directly.11. Keep the E2E check mergeable during migration
The legacy E2E implementation remains removed. A minimal compatibility workflow temporarily publishes the existing required
E2E - Resultcontext because the branch-protection change in.asf.yamlcannot take effect until this PR is merged. The compatibility workflow can be removed after ASF synchronizes the updated branch protection.Compatibility Notes
This PR intentionally introduces internal breaking changes for StreamPark 3.0:
org.apache.streampark.common.confpackage is replaced byorg.apache.streampark.common.configuration.User-facing configuration keys retain their defined compatibility aliases where required.
Verification
The following checks have been completed:
streampark-common: 102 tests passed.flink-conf.yamlconfig.yamlconfig.yamlFollow-up Work