apache/druid · error
Error reading response from GET on url [%s]
Error message
Error reading response from GET on url [%s]
What it means
getLookupStateForNode() performs an HTTP GET against a lookup node to fetch its current lookup state. On a failed (non-success) status, it attempts to read the response body; if reading fails with IOException it logs a warning, then throws an IOException describing the failed GET with whatever body was captured.
Source
Thrown at server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java:877
LOG.debug(
"Get on [%s], Status: [%s] reason: [%s], Response [%s].",
url,
returnCode.get(),
reasonString.get(),
response
);
return response;
}
catch (IOException ex) {
throw new IOE(ex, "Failed to parser GET lookups response from [%s]. response [%s].", url, result);
}
} else {
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
StreamUtils.copyAndClose(result, baos);
}
catch (IOException ex) {
LOG.warn(ex, "Error reading response from GET on url [%s]", url);
}
throw new IOE(
"GET request failed to [%s] : [%d] : [%s] Response: [%s]",
url,
returnCode.get(),
reasonString.get(),
StringUtils.fromUtf8(baos.toByteArray())
);
}
}
}
@VisibleForTesting
HttpResponseHandler<InputStream, InputStream> makeResponseHandler(
final AtomicInteger returnCode,
final AtomicReference<String> reasonString
)View on GitHub (pinned to 9b90983fd2)
Solutions
- Confirm the node is up and serving the lookup status endpoint.
- Check network path (LB timeouts, firewall) between coordinator and node.
- Ensure druid host/port configuration for the tier's nodes is correct.
Defensive patterns
Strategy: retry
Try / catch
try { Map<String, LookupBean> state = getLookupStateForNode(url); } catch (IOException e) { LOG.warn("GET %s failed; node will be retried next cycle", url); } Prevention
- Avoid querying nodes mid-restart; drain/deploy with rolling updates
- Verify host/port and TLS configuration for discovered nodes
- Monitor LB idle timeouts that abort in-flight responses
When it happens
Trigger: GET to a node's lookup status endpoint returns non-OK and the error stream cannot be read (connection reset, premature EOF).
Common situations: Node restarting during rolling deploy; firewall/load balancer cutting the connection; TLS or auth misconfiguration causing abrupt connection close.
Understand the failure class
Background: 'Something went wrong' / 'Request failed (500)' / 'HTTP error! status: 404' — what failed HTTP requests actually mean and how to find the real cause — this error's family across 28 libraries.
Related errors
- Error reading response
- Could not fetch last modified timestamp from URI [%s]
- Requested to skip [%s] bytes, but actual number of bytes ski
- Error occurred while trying to read uri:
- Failed to open range reader for segment[%s]
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/f766abe7052ba89c.
Report an issue: GitHub.