Repository navigation
[Task] Migrate the etcd registry and data-sync integration to shenyu-plugin-store #7597
Description
Background
etcd support is an optional vertical integration spanning both data-sync and registry:
shenyu-admin-listener-etcd;shenyu-sync-data-etcd;shenyu-registry-etcd;- their Spring Boot starters (e.g.
shenyu-spring-boot-starter-sync-data-etcd); shenyu-infra-etcd(shared etcd client infrastructure);shenyu-examples-*references andshenyu-e2e-case.
Currently etcd is a first-class provider in the compatibility registry starter, the admin distribution, and the README sync/registry tables. This issue proposes externalizing it per #7306 (vendor/middleware-specific adapter; loadable via external starter; dependency/release lifecycle should not enlarge the default distribution), while preserving current behavior through a documented compatibility contract and a rollback window. Because etcd touches both sync and registry, moving only one module would leave a split owner and an untestable configuration path; the entire etcd stack must move as one migration unit (same pattern as Consul #7308).
Note: since etcd is currently a first-class in-tree provider, this externalization requires community consensus before the main-repository removal step.
Tracked by #7306. Depends on #7294. Precedent: #7308 (Consul).
Scope
plugin-store
- Add a supported top-level layout for admin listeners, data-sync adapters, registry/instance adapters, and starters.
- Migrate all etcd modules with their current unit tests; preserve fixes present at cutover.
- Add missing starter auto-configuration tests.
- Add a Testcontainers-based integration/E2E environment using a real disposable etcd server, ShenYu admin, and ShenYu gateway.
- Cover: initial plugin/selector/rule synchronization; create/update/delete propagation; watch interruption and reconnect/recovery; service instance register/update/deregister/discovery; multiple endpoints; orderly shutdown without leaked watcher/lease threads.
- Document etcd version compatibility, key layout, supported client versions, licensing, and ShenYu compatibility.
- Decide
shenyu-infra-etcdownership: move with the stack if etcd-specific, or retain in main if shared by other modules.
apache/shenyu
- Remove the etcd admin-listener, sync-data, registry modules, starters, aggregator entries, default-bootstrap/admin distribution dependencies, and examples only after external parity.
- Update dependency management, configuration metadata, examples, docs, CI matrices, LICENSE/NOTICE, and distribution packaging.
- Reuse the [ISSUE #7311] Decouple registry core from implementations. #7578 SPI factory (
ShenyuInstanceRegisterRepositoryFactory.loadRepository) so theetcdtype key resolves to an external SPI implementation without hard-coded core coupling. - Preserve historical release notes and upgrade/configuration documentation, and the
etcdsync/registry type names as compatibility contracts. - Provide migration and rollback guidance for existing etcd keyspaces and gateway/admin configuration.
Acceptance Criteria
- Admin listener, data sync, registry/instance support, and starters are owned and built together in plugin-store.
- Unit tests cover create/update/delete, watcher concurrency, reconnect, instance updates, and shutdown.
- Starter auto-configuration has direct test coverage.
- E2E proves admin-to-gateway synchronization and instance registration through a real etcd server.
- Other sync and registry implementations remain green after main-repository removal.
- Existing etcd key layout/configuration has documented compatibility and rollback steps.
- A minimal admin/gateway deployment can enable etcd solely through external artifacts and configuration.
- Artifact publication and main-repository removal are coordinated without duplicate coordinates.
Activity
github-actions commentedon Oct 13, 2026
👋 Hello @yuluo-yx
A new issue has been opened by @Aias00:
Please review when you have time. Thank you! 🙏