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

  1. Confirm the node is up and serving the lookup status endpoint.
  2. Check network path (LB timeouts, firewall) between coordinator and node.
  3. 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

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


AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07). Data as JSON: /api/errors/f766abe7052ba89c. Report an issue: GitHub.