[BUG] DiscoveryUpstreamServiceImpl.importData silently writes null discoveryHandlerId
- Dominant language
- Java
- Stars
- 8.8k
- Forks
- 3.1k
- Avg merge
- 7d 1h
- Merged PRs (30d)
- 85
Description
- severity: Medium
- files: `shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryUpstreamServiceImpl.java:318-322`
- description: `discoveryUpstreamDTO.setDiscoveryHandlerId(discoveryHandlerIdMapping.get(...))` uses `Map.get`, which returns `null` when the source handler id was not in the import. The null is set on the DTO and `buildDiscoveryUpstreamDO` persists a row with a null `discoveryHandlerId` (or fails on an FK/not-null constraint, which combined with N7 partial-commits).
- impact: Orphan upstream rows that never link to a handler, or noisy insert failures mid-import.
- suggested_fix: If the mapping returns null, append to `errorMsgBuilder` and `continue` rather than inserting.
- confidence: Medium
- related_existing: none.
---
_Identified during the 2026-08-02 deep re-scan; full list in [`docs/scan2-2026-08-02/06-medium-tiers.md`](docs/scan2-2026-08-02/06-medium-tiers.md)._
Contributor guide
No contributing guide indexed for this repository
Research direction
Start in shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryUpstreamServiceImpl.java at lines 318-322 and trace importData through buildDiscoveryUpstreamDO. Check how missing discoveryHandlerId mappings are handled and how errorMsgBuilder is used. Done means missing mappings are reported and do not produce persisted orphan rows or partial-import failures.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100