yangjj-iso opened a new pull request, #7657:
URL: https://github.com/apache/shenyu/pull/7657
Fixes #6502.
If an asynchronous upstream check or selector update fails,
`allOf(...).join()` throws before the shared futures list is cleared.
Subsequent cycles retain and rejoin that failed future, repeatedly reporting
the old failure and accumulating completed tasks.
Clear each completed cycle's futures in `finally`. The exception still
reaches the existing scheduler error handler, while later cycles start without
stale futures.
Add four regression cases covering ordinary checks and zombie recovery with
a real worker executor, cancelled checks, and successful/empty cycles. The
async failure cases verify that the original cause is preserved and that a
subsequent status change updates the selector and publishes configuration
events. No sleeps or network services are required.
Validation:
- Before the fix: 3 of the 4 new cases fail because failed/cancelled futures
remain in the list.
- After the fix: 107 tests pass, with 1 pre-existing disabled test, across
upstream checking, selector handle converters, and common upstream utilities
(108 total; zero failures/errors).
- Checkstyle and Apache RAT pass across the affected reactor; `git diff
--check` passes.
- Full-repository install and deployed-cluster testing were not run locally.
```sh
./mvnw -B -ntp -pl shenyu-admin -am test \
'-Dtest=UpstreamCheckService*Test,*SelectorHandleConverter*Test,CommonUpstreamUtilsTest'
\
-Dsurefire.failIfNoSpecifiedTests=false -DskipRemoteResources=true \
-Djacoco.skip=true -Dmaven.javadoc.skip=true
./mvnw -B -ntp -pl shenyu-admin -am apache-rat:check
-DskipRemoteResources=true
```
- [x] Read the [contribution
guidelines](https://shenyu.apache.org/community/contributor-guide/).
- [x] Submit regression tests.
- [ ] Full local `./mvnw clean install -Dmaven.javadoc.skip=true`
(affected-reactor validation above).
--
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]