quarkusio/quarkus · error · RuntimeException
RuntimeException(e)
Error message
RuntimeException(e)
What it means
quarkus grpc describe command reads the served FileDescriptorProto bytes and pretty-prints them with JsonFormat. Any checked exception during parsing or printing is rethrown as an unchecked RuntimeException(e) so the picocli command aborts with a stack trace. The root cause is preserved as the cause.
Source
Thrown at extensions/grpc/cli/src/main/java/io/quarkus/grpc/cli/DescribeCommand.java:38
}
@Override
protected void execute(MutinyServerReflectionGrpc.MutinyServerReflectionStub stub) {
ServerReflectionRequest request = ServerReflectionRequest
.newBuilder()
.setFileContainingSymbol(unmatched.get(1))
.build();
Multi<ServerReflectionResponse> response = stub.serverReflectionInfo(Multi.createFrom().item(request));
response.toUni().map(r -> {
List<ByteString> list = r.getFileDescriptorResponse().getFileDescriptorProtoList();
for (ByteString bs : list) {
try {
DescriptorProtos.FileDescriptorProto fdp = DescriptorProtos.FileDescriptorProto.parseFrom(bs);
log(JsonFormat.printer().print(fdp));
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return null;
}).await().indefinitely();
}
}
View on GitHub (pinned to e1c734241f)
Solutions
- Inspect the caused-by stack trace to find the real parse/print error
- Verify the target server supports gRPC server reflection and the host/port are correct
- Retry the command against a known-good service to rule out environment/proxy issues
Example fix
// before
} catch (Exception e) {
throw new RuntimeException(e);
}
// after
} catch (Exception e) {
throw new RuntimeException("Failed to describe service: invalid descriptor from server", e);
} Defensive patterns
Strategy: try-catch
Try / catch
try {
quarkus.grpc.describe MyService;
} catch (RuntimeException e) {
Throwable root = e;
while (root.getCause() != null) root = root.getCause();
System.err.println("describe failed: " + root.getMessage());
} Prevention
- Confirm the target server supports gRPC server reflection (grpcurl -plaintext host:port list)
- Connect directly to the gRPC port, avoiding proxies that corrupt payloads
- Keep the Quarkus CLI and protobuf runtime versions aligned with the server
When it happens
Trigger: Running `quarkus grpc describe <service>` against a server whose descriptor bytes are corrupt/unparseable (parseFrom fails), or JsonFormat.printer().print(fdp) fails on an unexpected proto configuration.
Common situations: Pointing the CLI at a non-gRPC-reflection endpoint that returns garbage bytes; TLS/proxy tampering with the response; mismatched protobuf runtime versions between CLI and server.
Related errors
- RuntimeException(e)
- RuntimeException(e)
- More than one @QuarkusMain method found with name '${name}':
- Build metrics file cannot be read:
- Build report file cannot be written to:
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/3e2da6ad31bff610.
Report an issue: GitHub.