This is an automated email from the ASF dual-hosted git repository.
Fly-Style pushed a commit to branch 39.0.0
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/39.0.0 by this push:
new 86185c8dc0b Fix query driver. (#20755) (#20836)
86185c8dc0b is described below
commit 86185c8dc0b4ea2bbf1efa9e93099ce27f8a861f
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Nov 4 20:37:36 2026 +0200
Fix query driver. (#20755) (#20836)
(cherry picked from commit 7f398f90326e1bc049e6ee7c994893e4acbea03c)
Co-authored-by: Karan Kumar <[email protected]>
---
.../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 6720fc61607..cc7227561b2 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
@@ -751,20 +751,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]