hanicz opened a new pull request, #1317: URL: https://github.com/apache/knox/pull/1317
[KNOX-3041](https://issues.apache.org/jira/browse/KNOX-3041) - Eliminate load-balancing race condition in HA dispatch ## What changes were proposed in this pull request? Replace the peek-at-rewrite + shift-after-response backend selection with an atomic pick-and-advance at dispatch time. The old pattern let concurrent requests observe the same queue head for the entire HTTP round trip, so a slow request would pin every concurrent request onto the same backend. - Add URLManager#getActiveURLAndAdvance (and the HaProvider passthrough), implemented as a synchronized poll+offer so concurrent callers see distinct URLs whenever more than one is configured. - setBackendUri now picks and rotates atomically; remove shiftActiveURL / shiftCallback and the after-response shift in the sync and SSE dispatchers. - Add updateBackendURL so a re-targeted request carries the picked backend's base path (HA instances may publish per-server paths, e.g. HiveServer2), recovering the source's base path by matching configured pool URLs. **Two pre-existing bugs remain** 1. activeURL is set for the failed one after a failover for non LB-requests. 2. Failover might go to the same backend that just failed if there are concurrent requests that rotate the URLs. ## How was this patch tested? - Tested locally with custom service - Tested locally with custom SSE service - Unit tests ## Integration Tests N/A ## UI changes N/A -- 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]
