{"record":{"id":"ee8ec70813c53978","repo":"apache/druid","slug":"fatal-error-grpc-query-server-startup-failed","errorCode":null,"errorMessage":"Fatal error: grpc query server startup failed","messagePattern":"Fatal error: grpc query server startup failed","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"extensions-contrib/grpc-query/src/main/java/org/apache/druid/grpc/server/GrpcEndpointInitializer.java","lineNumber":98,"sourceCode":"        queryScheduler\n    );\n  }\n\n  @LifecycleStart\n  public void start()\n  {\n    server = new QueryServer(config, driver, authMapper);\n    try {\n      server.start();\n    }\n    catch (IOException e) {\n      // Indicates an error when gRPC tried to start the server\n      // (such the port is already in use.)\n      log.error(e, \"Fatal error: gRPC query server startup failed\");\n\n      // This exception will bring down the Broker as there is not much we can\n      // do if we can't start the gRPC endpoint.\n      throw new ISE(e, \"Fatal error: grpc query server startup failed\");\n    }\n    catch (Throwable t) {\n      // Catch-all for other errors. The most likely error is that some class was not found\n      // (that is, class loader issues in an IDE, or a jar missing in the extension).\n      log.error(t, \"Fatal error: gRPC query server startup failed\");\n\n      // This exception will bring down the Broker as there is not much we can\n      // do if we can't start the gRPC endpoint.\n      throw t;\n    }\n  }\n\n  @LifecycleStop\n  public void stop()\n  {\n    if (server != null) {\n      try {\n        server.blockUntilShutdown();","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-contrib/grpc-query/src/main/java/org/apache/druid/grpc/server/GrpcEndpointInitializer.java#L80-L116","documentation":"GrpcEndpointInitializer.start failed to start the embedded gRPC query server, most commonly because the configured port is already in use. The initializer logs the IOException and rethrows an ISE deliberately, since without the gRPC endpoint the Broker cannot serve gRPC queries, so startup is intentionally aborted.","triggerScenarios":"Thrown at extensions-contrib/grpc-query/src/main/java/org/apache/druid/grpc/server/GrpcEndpointInitializer.java:98 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check whether the configured gRPC port is already occupied (netstat/lsof) and free it or change the port in the extension config.","Look at the wrapped IOException in the log for the precise bind failure.","Ensure no duplicate Broker instances are starting on the same host with the same port.","Verify firewall/host binding settings allow listening on the configured interface."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}