#6661·shenyu

[BUG] discoveryUpstreamHandlerEvent 忽略 DELETE 事件 (etcd 路径) — 过时的上游永远不会被删除

作者: Aias00创建于 2026年8月3日更新于 2026年9月9日
标签type: bugdata-sync: etcdpriority: high
  • 严重性: 高
  • 位置: shenyu-sync-data-center/shenyu-sync-data-api/src/main/java/org/apache/shenyu/sync/data/core/AbstractPathDataSyncService.java:132-141
  • 描述: 方法体为 if (!EventType.DELETE.equals(eventType)) { Optional.ofNullable(updateData).ifPresent(e -> cacheDiscoveryUpstreamData(...)); } — 缺少 DELETE 条件分支;不存在 unCacheDiscoveryUpstreamData 方法。etcd watchChildChange 删除回调 (EtcdSyncDataService.java:88) 正确地触发 super.event(..., null, ..., EventType.DELETE) 来处理发现上游的删除,并且 event() 会分发到 discoveryUpstreamHandlerEvent,但处理器默认会丢弃此事件。其他所有处理器 (pluginHandlerEvent, selectorHandlerEvent, ruleHandlerEvent:144-146, appAuthHandlerEvent:153-155, metaDataHandlerEvent:161-167, proxyHandlerEvent:118-123) 正确地处理 DELETE — 只有发现上游缺失。