btlqql opened a new pull request, #2523: URL: https://github.com/apache/rocketmq-dashboard/pull/2523
## What is the purpose of the change `listRegistryClusters` fanned its NameServer probes out onto an unbounded cached thread pool. `CompletableFuture.orTimeout` only completed the wrapper future, so a probe blocked on an unreachable NameServer kept its worker thread, and every refresh of the cluster list accumulated more blocked threads. ## Brief changelog - new bounded, closeable `RegistryProbeRunner`: a fixed-size worker pool with a bounded queue replaces the unbounded cached thread pool - when a probe exceeds its deadline the worker is explicitly cancelled (interrupted) so the pool thread is released, instead of leaking behind the timed-out future - a saturated queue degrades the offending registry entry to unavailable (logged) rather than throwing or growing the pool - the runner is shut down on Spring context close; idle workers (including core) time out so a quiet registry holds no threads - the admin clients the probes drive already carry a 5s RPC timeout (`MqAdminExtFactory`), so released workers don't pile up behind hung calls ## How was this patch verified - server: `ClusterServiceRegistryTest` 5/5, including two new tests that block every probe and assert the pool never grows past its bound across repeated refreshes, and that a saturated queue degrades without throwing; full `mvn test` ran 1500 tests with only the 7 pre-existing environment failures in the CLI agent tests (missing `sh` binary on a Windows machine, identical on the clean base) Fixes #2472 -- 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]
