This is an automated email from the ASF dual-hosted git repository.
cryptoe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new 7f398f90326 Fix query driver. (#20755)
7f398f90326 is described below
commit 7f398f90326e1bc049e6ee7c994893e4acbea03c
Author: Karan Kumar <[email protected]>
AuthorDate: Wed Oct 28 04:05:06 2026 +0530
Fix query driver. (#20755)
---
.../main/java/org/apache/druid/grpc/server/QueryDriver.java | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git
a/extensions-contrib/grpc-query/src/main/java/org/apache/druid/grpc/server/QueryDriver.java
b/extensions-contrib/grpc-query/src/main/java/org/apache/druid/grpc/server/QueryDriver.java
index cea0241f050..380f1a83731 100644
---
a/extensions-contrib/grpc-query/src/main/java/org/apache/druid/grpc/server/QueryDriver.java
+++
b/extensions-contrib/grpc-query/src/main/java/org/apache/druid/grpc/server/QueryDriver.java
@@ -748,20 +748,24 @@ public class QueryDriver
@SuppressWarnings("unchecked")
private Class<GeneratedMessage> getProtobufClass(final QueryRequest request)
{
+ final Class<?> clazz;
try {
- return (Class<GeneratedMessage>)
Class.forName(request.getProtobufMessageName());
+ // Class name is client-supplied: load without initializing so no static
initializer of an arbitrary class runs.
+ clazz = Class.forName(request.getProtobufMessageName(), false,
QueryDriver.class.getClassLoader());
}
- catch (ClassNotFoundException e) {
+ catch (ClassNotFoundException | LinkageError e) {
throw new RequestError(
"The Protobuf class [%s] is not known. Is your protobuf jar on the
class path?",
request.getProtobufMessageName()
);
}
- catch (ClassCastException e) {
+ // The unchecked cast below never fails at runtime, so the type must be
checked explicitly.
+ if (!GeneratedMessage.class.isAssignableFrom(clazz)) {
throw new RequestError(
"The class [%s] is not a Protobuf",
request.getProtobufMessageName()
);
}
+ return (Class<GeneratedMessage>) clazz;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]