Repository navigation
[ISSUE #7599] Externalize Apollo after the deprecation release - #7628
Draft
yangjj-iso wants to merge 13 commits into
Draft
yangjj-iso wants to merge 13 commits into
yangjj-iso wants to merge 13 commits into
Conversation
Aias00
reviewed
Oct 15, 2026
Aias00
left a comment
Contributor
There was a problem hiding this comment.
Review: COMMENT (draft — not approving)
Solid, complete in-tree externalization of the four Apollo modules, consistent with #7599 and the master tracking issue #7306.
What looks correct:
- All five apollo artifacts are removed:
shenyu-admin-listener-apollo,shenyu-sync-data-apollo,shenyu-registry-apollo,shenyu-spring-boot-starter-sync-data-apollo— plus their parent<module>entries, imports, andapplication.ymlreferences. LICENSE/NOTICE(admin + bootstrap dist) drop theapollo-client/apollo-openapi/apollo-coreentries, andApolloPathConstantsis correctly kept in core as a compatibility shim with no Apollo SDK dependency..github/scripts/check-registry-dependencies.pyremovesapollofrom bothPROVIDERSandCOMPATIBILITY_PROVIDERS.- CI is green: Analyze (java), build, and all integrated-test jobs pass.
Blocking-for-merge concern (not for the draft itself):
- Per the migration contract this PR ships in
docs/plugin-store-apollo.md, Apollo must remain available for the deprecation release, and removal requires dev-list consensus, a released deprecation cycle, external artifact publication, and an announced rollback window — with no removal release scheduled. The PR is correctly marked draft and the doc explicitly says the removal PR "must not be merged in that deprecation release." Please keep that gate: do not merge until #7627 (the deprecation notice) has actually shipped in a core release and the deprecation cycle is complete. Merging this ahead of that would contradict the contract the project is publishing.
Minor (non-blocking):
- The doc's "store 2.7.1-SNAPSHOT against core 2.7.2-SNAPSHOT" are development coordinates; make sure the final published version replaces them with a real compatibility matrix.
Leaving as a comment because it is a draft; the mechanics are sound.
Contributor
Author
|
CI update for head
Could a maintainer with workflow rerun permissions please rerun the failed jobs once dependency downloads are healthy? GitHub rejects reruns from my contributor account with |
This branch has not been deployed
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.
Prepare the later Apollo main-repository removal for #7599, after the staged deprecation in #7627. Receiving extension: apache/shenyu-plugin-store#28. Remove the four Apollo runtime/starter modules, their aggregator entries and core-managed Apollo SDK dependencies. Update README/registry docs to point to the external extension, retire Apollo example configuration (preserved in the receiving repo), update the registry CI provider list, and transfer Apollo client licensing to the extension. No active main reactor module or POM dependency references Apollo's SDK after this change. Retain
ApolloPathConstantsunchanged inshenyu-commonas a small compatibility shim. Preserve historical release notes, enum/type keys, keyspaces and configuration semantics. The existing registry SPI factory is unchanged; the receiving tests prove it resolves the externalapolloprovider. Documentation covers exact install/enable settings, the preceding-release deprecation requirement, one-owner publication, later cutover and rollback. Validation: - Affected 166-module reactorclean package -DskipTests -Dmaven.javadoc.skip=true -Djacoco.skip=true -DskipRemoteResources=truepassed, including test compilation, Checkstyle and RAT. - 29 targeted tests passed across registry factory, compatibility starter, Admin discovery and HTTP/WebSocket/ZooKeeper/Nacos synchronization. Seven Python dependency-boundary tests passed. - Receiving Apollo reactor passed 30 tests with zero failures/errors/skips; all four final JARs passed implementation/SPI/auto-configuration/core-API packaging checks.git diff --checkpassed. Do not merge this draft in the deprecation release. It is based on the advance-notice commit from #7627, but neither that commit nor its PR constitutes a released deprecation cycle. Before removal: link the dev-list decision, ship the notice while retaining Apollo for one core release, merge and verify the receiving extension, announce/publish compatible artifacts without duplicate Maven coordinates, validate the staging deployment and announce a rollback window. No release, upstream merge or artifact publication has been performed. #7599 remains open until those release gates are satisfied. Current branch validation: synchronized with master; Admin and Bootstrap package successfully, all 8 registry factory/SPI tests pass, and all 7 Python dependency-boundary tests pass. The removal remains a draft until the announced deprecation release/cycle, external artifact publication and rollback-window gates are complete. The shared E2EWaitForHelperTestuses an ephemeral local HTTP server, including a latch-controlled delayed response, instead of the public Postman Echo service. Both success and timeout tests pass without external HTTP access; production wait/retry behavior is unchanged. ### Shared E2E CI regression repairs The full E2E matrix exposed failures in shared test infrastructure: - Storage and cluster routing scenarios use a healthchecked local HTTP upstream on the Compose network. The existing URI/method and empty-body assertions exercise the gateway without depending on public httpbin availability. - RocketMQ uses an explicitly assigned lite-pull consumer with a unique group and request identifier. Wait for topic publication, seek each queue to its beginning, then require the matching access log. Unrelated logs cannot pass the check; non-transient broker errors fail immediately. The proxied request must return HTTP 200. - Spring Cloud waits for the discovered route to return the order produced by the actual example controller, including its response-name prefix. This covers the delay between selector/rule sync and Eureka's first upstream refresh. Remove an obsolete update using a hardcoded namespace-plugin ID. Local validation: four HTTP fixture tests (including all six consuming Compose files), seven focused Java tests, Checkstyle and Apache RAT on the affected E2E reactor, and the storage Compose runner checks pass. Regression coverage includes delayed topic publication, rejection of unrelated access logs and broker permission errors, and a route that initially has no usable upstream. Docker daemon execution was unavailable locally; GitHub Actions provides container validation. The four-database storage matrix passed on every branch in the preceding CI run; the latest follow-up reruns the complete matrix.Validation after the October 19 synchronization
Local Java validation used Temurin 21.0.10 through the repository Maven wrapper.
Validation after the October 21 synchronization
Merge current master
87c22dde7and resolve the overlapping Unreleased notes by retaining both the gated Apollo cutover text and every new upstream behavior/migration note. The removal remains a draft; no deprecation-release, consensus or publication gate is waived.All 18 selected registry factory/SPI/compatibility-starter tests pass on Microsoft OpenJDK 17.0.18, as do all seven dependency-boundary script tests. Affected-reactor Checkstyle, Apache RAT and git diff --check pass. No release or artifact publication was performed.
Shared CI fixture corrections: CryptorResponsePluginTest now checks the post-#7903 configuration error for both encrypt/decrypt when a field is absent, including absence of the original user data. SDK tests wait up to 60 seconds for usable registered routes before exercising assertions. ZooKeeper registration tests keep their declared backend ports reachable so the real health checker cannot race registry-removal assertions. Validation: 16 cryptor unit cases and 16 Admin discovery/health cases pass; the HTTP and SDK integration test reactors compile with Checkstyle. Full Docker integration execution is not claimed: the local Linux Docker engine is unavailable. Remote check results are tracked separately.