Aias00 opened a new issue, #7597: URL: https://github.com/apache/shenyu/issues/7597
## 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 and `shenyu-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-etcd` ownership: 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 #7578 SPI factory (`ShenyuInstanceRegisterRepositoryFactory.loadRepository`) so the `etcd` type key resolves to an external SPI implementation without hard-coded core coupling. - Preserve historical release notes and upgrade/configuration documentation, and the `etcd` sync/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. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
