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]

Reply via email to