zmuxuny opened a new issue, #5552: URL: https://github.com/apache/rocketmq-dashboard/issues/5552
### Before Creating the Bug Report - [x] I have searched the [open issues](https://github.com/apache/rocketmq-dashboard/issues) of this repository and believe that this is not a duplicate. - [x] This is a defect in RocketMQ Studio, not a usage question and not a defect in another Apache RocketMQ repository. - [x] I can reproduce this on the current `master` branch, or I have stated the exact version I am running below. ### Studio Version Originally reproduced on `rocketmq-studio@0228dad5`, built from source (2026-09-23). Current fix PR #5256 records fresh 2026-10-04 validation against `rocketmq-studio@6a68042fa73a513f40436ca721944b4de48181ec`. ### Runtime Environment Frontend: React/Vite in the repository. The failure sequence can be reproduced with controlled Proxy API responses; no browser-specific or backend-specific behavior is required. ### Connected RocketMQ Cluster Any configured Proxy address list. A live cluster is not needed to reproduce this frontend request-order race. ### Build Toolchain _No response_ ### Describe the Bug The Proxy page already tracks a request ID so an older list load cannot overwrite a newer one. However, `applyProxyHome` checks that ID only when `getProxyTopology()` succeeds. If an older health probe rejects, the `catch` falls through to `setProxyNodes(nodes)` without checking whether a newer list has already been applied. A failed optional health probe can therefore restore removed/outdated Proxy addresses and selection in the UI. ### Steps to Reproduce 1. Let an earlier list request return address A, but keep its `getProxyTopology()` call pending. 2. Start a newer load (for example, after removing A) and let it apply an address list without A. 3. Reject the earlier `getProxyTopology()` call. 4. Observe that the earlier address list is applied again. ### What Did You Expect to See? Only the latest active list request should update nodes, statistics, local storage, or the selected address, regardless of whether its optional health probe succeeds or fails. ### What Did You See Instead? The old address reappears after the older health probe fails, even though the newer list has already been rendered. ### Additional Context ### Previous report and current fix (2026-10-04) This replaces [#5059](https://github.com/apache/rocketmq-dashboard/issues/5059), automatically closed by `github-actions[bot]` for inactivity on 2026-10-04. The closure was a stale-workflow action, not a maintainer rejection of the reported defect. The existing fix PR is [#5256](https://github.com/apache/rocketmq-dashboard/pull/5256), which remains open. October 4 validation, dated CI results, and remaining limitations are recorded there. Overall CI is not green. ### Historical verification (2026-09-26) The original fix PR #5060 recorded a red/green regression and 16 focused frontend tests passing in the September 26 report; its full build encountered the separate license gate tracked by #5019. #5256 is the current replacement fix PR, and its October 4 results and limitations supersede those historical results. ### Scope and related reports The earlier out-of-order test covered an older `queryProxyHomePage()` response arriving late (#1336). This is a different ordering: the older home response arrives first, then its health probe fails after the newer list has committed. The fix includes a deterministic deferred-promise regression for this path. Related #5364 concerns requests publishing browser preferences after page unmount. This report concerns an older failed health probe overwriting a newer in-page list and does not cover that separate cleanup path. ### Are You Willing to Submit a Pull Request? - [x] Yes, I am willing to submit a pull request. -- 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]
