sarkaramrit1993 opened a new pull request, #5127: URL: https://github.com/apache/solr/pull/5127
https://issues.apache.org/jira/browse/SOLR-17971 With the Overseer disabled, REBALANCELEADERS always waited the full `maxWaitSeconds` (60s by default) and then logged a timeout. The leaders still moved. `waitAsyncRequests()` only looked for sub-command results in the Overseer completed/failure maps, but in distributed mode those results go to `DistributedApiAsyncTracker`. Because of that, the ids were also never cleared and piled up under `/distributedapi/async/persistent`. Changes: - `waitAsyncRequests()` now checks the store for the current mode, same branching as `REQUESTSTATUS` in `ClusterCommands`. In distributed mode, `deleteSingleAsyncId()` both tells us the task is done and removes it. - Overseer path behaves the same, just drops the extra `contains()` before `remove()`. Not changed: I went with the tracker directly instead of issuing a `REQUESTSTATUS` call per id as the JIRA suggests. It's the same lookup without the extra request. Tests: new `testRebalanceLeadersClearsAsyncIds` in `TestRebalanceLeaders` asserts no `rebalanceleaders_` ids are left in either store and the call returns before the timeout. Without the fix and the Overseer disabled, it fails with 29 leftover ids. Ran the full class with `-Ptests.nightly=true` in both modes, plus `gradlew check -x test`. -- 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
