waterWang opened a new pull request, #20128:
URL: https://github.com/apache/druid/pull/20128
### Description
Fixes #19950
When a historical server returns a non-200/404 response or is unreachable
during `fetchSegmentLoadingCapabilities()`, the `HttpLoadQueuePeon`
constructor
throws an `RE`. This exception propagates through
`LoadQueueTaskMaster.resetPeonsForNewServers()` into
`PrepareBalancerAndLoadQueues`, which is the first duty in the
`HistoricalManagementDuties` group. The top-level
`DruidCoordinator.DutiesRunnable.run()` catches and logs the exception, but
segment management (loading, balancing, handoffs) stops entirely for **all**
servers — not just the unhealthy one. Ingestion tasks back up waiting for
handoff.
### Changes
- `fetchSegmentLoadingCapabilities()`: Instead of throwing `RE` on
non-200/404
responses or any `Throwable`, return default `SegmentLoadingCapabilities`
derived from the configured batch size, with a warning log. The peon is
still
created, the server is still managed with conservative defaults, and the
rest
of the duty group proceeds normally.
- Mirror the existing 404 branch's fallback behavior (already returned
default
capabilities).
### Key design decisions
- The 404 branch already existed and returned default capabilities. The fix
extends this same graceful degradation to non-200 responses and exceptions.
- `log.makeAlert()` is preserved for non-200 responses so operators still get
alerted about the unhealthy server.
- The catch block now logs a warning instead of throwing, keeping the
Coordinator ticking.
### Release notes
Fixed a bug where a single unhealthy or unreachable historical server could
stall all segment loading and balancing across the cluster.
--
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]