{"record":{"id":"0d891c843dd9eba6","repo":"apache/druid","slug":"failed-to-parse-update-response-from-s-respons","errorCode":null,"errorMessage":"Failed to parse update response from [%s]. response [%s]","messagePattern":"Failed to parse update response from \\[(.+?)\\]\\. response \\[(.+?)\\]","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java","lineNumber":815,"sourceCode":"              .addHeader(HttpHeaders.Names.CONTENT_TYPE, SmileMediaTypes.APPLICATION_JACKSON_SMILE)\n              .setContent(smileMapper.writeValueAsBytes(lookupsUpdate)),\n          makeResponseHandler(returnCode, reasonString),\n          lookupCoordinatorManagerConfig.getHostTimeout()\n      ).get()) {\n        if (httpStatusIsSuccess(returnCode.get())) {\n          try {\n            final LookupsState<LookupExtractorFactoryMapContainer> response = smileMapper.readValue(\n                result,\n                LOOKUPS_STATE_TYPE_REFERENCE\n            );\n            LOG.debug(\n                \"Update on [%s], Status: %s reason: [%s], Response [%s].\", url, returnCode.get(), reasonString.get(),\n                response\n            );\n            return response;\n          }\n          catch (IOException ex) {\n            throw new IOE(ex, \"Failed to parse update response from [%s]. response [%s]\", url, result);\n          }\n        } else {\n          final ByteArrayOutputStream baos = new ByteArrayOutputStream();\n          try {\n            StreamUtils.copyAndClose(result, baos);\n          }\n          catch (IOException e2) {\n            LOG.warn(e2, \"Error reading response\");\n          }\n\n          throw new IOE(\n              \"Bad update request to [%s] : [%d] : [%s]  Response: [%s]\",\n              url,\n              returnCode.get(),\n              reasonString.get(),\n              StringUtils.fromUtf8(baos.toByteArray())\n          );\n        }","sourceCodeStart":797,"sourceCodeEnd":833,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java#L797-L833","documentation":"updateNode() throws this IOException when the HTTP client successfully returns a 2xx response but parsing the response body (mapResponseHandler-style streaming read) fails with an IOException. Druid treats an unreadable success response from a lookup node's update endpoint as an error because the coordinator cannot confirm what the node applied.","triggerScenarios":"POSTing a lookup update to a lookup node's /lookup lookups endpoint and the response body stream throws IOException mid-read (connection reset while reading body, malformed chunked encoding, truncated response).","commonSituations":"Lookup nodes under load dropping connections mid-response, intermediary proxies/load balancers truncating responses, network flakiness in distributed clusters during lookup propagation.","solutions":["Inspect lookup node logs around the same timestamp for handler errors or connection resets","Check network path between coordinator and lookup nodes (proxies, LB timeouts)","Retry the update — lookup propagation is retried by the management loop","Ensure lookup node HTTP server versions are compatible and not emitting malformed responses"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  coordinator.updateNode(host, lookupMap);\n} catch (IOException e) {\n  if (e.getMessage().startsWith(\"Failed to parse update response\")) {\n    // transient body-read failure: retry with backoff\n  }\n}","preventionTips":["Rely on the coordinator's background management loop to retry failed updates","Monitor cluster network health and proxy/LB response-truncation issues","Keep lookup update payloads modest so responses complete quickly","Verify node health endpoints before pushing large lookup updates"],"tags":["http","io"],"backgroundTag":"http-request-failed","analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}