Skip to content

Commit b7ca95f

Browse files
authored
fix(java): initialize netty-shaded at run-time and add reflection configurations for netty classes (#1290)
* fix(java): initialize netty-shaded at run-time and add reflection configurations for netty classes
1 parent dc3233f commit b7ca95f

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/nativeimage/GrpcNettyFeature.java

+20
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,26 @@ private static void loadGrpcNettyClasses(BeforeAnalysisAccess access) {
8585
registerClassForReflection(access, "io.grpc.netty.shaded.io.netty.channel.DefaultFileRegion");
8686
registerClassForReflection(
8787
access, "io.grpc.netty.shaded.io.netty.channel.unix.PeerCredentials");
88+
registerClassForReflection(
89+
access, "io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline");
90+
registerClassForReflection(
91+
access, "io.grpc.netty.shaded.io.grpc.netty.WriteBufferingAndExceptionHandler");
92+
registerClassForReflection(
93+
access, "io.grpc.netty.shaded.io.netty.channel.ProtocolNegotiators");
94+
registerClassForReflection(access, "io.grpc.netty.shaded.io.netty.handler.ssl.SslHandler");
95+
registerClassForReflection(access, "io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler");
96+
registerClassForReflection(
97+
access, "io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext");
98+
registerClassForReflection(
99+
access, "io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline$TailContext");
100+
registerClassForReflection(
101+
access, "io.grpc.netty.shaded.io.grpc.netty.ProtocolNegotiators$WaitUntilActiveHandler");
102+
registerClassForReflection(
103+
access, "io.grpc.netty.shaded.io.grpc.netty.ProtocolNegotiators$ClientTlsHandler");
104+
registerClassForReflection(
105+
access, "io.grpc.netty.shaded.io.grpc.netty.ProtocolNegotiators$GrpcNegotiationHandler");
106+
registerClassForReflection(
107+
access, "io.grpc.netty.shaded.io.netty.channel.ChannelHandlerMask");
88108

89109
// Epoll Libraries
90110
registerClassForReflection(access, "io.grpc.netty.shaded.io.netty.channel.epoll.Epoll");

gax-java/gax-grpc/src/main/resources/META-INF/native-image/com.google.api/gax-grpc/native-image.properties

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ Args=--add-opens=java.base/java.time=ALL-UNNAMED \
99
io.grpc.netty.shaded.io.netty.channel.epoll,\
1010
io.grpc.netty.shaded.io.netty.channel.unix,\
1111
io.grpc.netty.shaded.io.netty.handler.ssl,\
12-
io.grpc.internal.RetriableStream \
12+
io.grpc.internal.RetriableStream,\
13+
io.grpc.netty.shaded.io.netty \
1314
--features=com.google.api.gax.grpc.nativeimage.ProtobufMessageFeature,\
1415
com.google.api.gax.grpc.nativeimage.GrpcNettyFeature \
1516
-H:-RunReachabilityHandlersConcurrently

gax-java/gax-grpc/src/main/resources/META-INF/native-image/com.google.api/gax-grpc/reflect-config.json

+39
Original file line numberDiff line numberDiff line change
@@ -283,5 +283,44 @@
283283
"name": "selectedKeys"
284284
}
285285
]
286+
},
287+
{
288+
"name" : "com.google.auth.oauth2.ServiceAccountCredentials",
289+
"allDeclaredConstructors" : true,
290+
"allPublicConstructors" : true,
291+
"allDeclaredMethods" : true,
292+
"allPublicMethods" : true,
293+
"allDeclaredFields" : true,
294+
"allPublicFields" : true,
295+
"queryAllPublicConstructors" : true,
296+
"queryAllDeclaredConstructors" : true,
297+
"queryAllPublicMethods" : true,
298+
"queryAllDeclaredMethods" : true
299+
},
300+
{
301+
"name" : "org.apache.commons.pool2.impl.DefaultEvictionPolicy",
302+
"allDeclaredConstructors" : true,
303+
"allPublicConstructors" : true,
304+
"allDeclaredMethods" : true,
305+
"allPublicMethods" : true,
306+
"allDeclaredFields" : true,
307+
"allPublicFields" : true,
308+
"queryAllPublicConstructors" : true,
309+
"queryAllDeclaredConstructors" : true,
310+
"queryAllPublicMethods" : true,
311+
"queryAllDeclaredMethods" : true
312+
},
313+
{
314+
"name" : "java.nio.channels.spi.SelectorProvider",
315+
"allDeclaredConstructors" : true,
316+
"allPublicConstructors" : true,
317+
"allDeclaredMethods" : true,
318+
"allPublicMethods" : true,
319+
"allDeclaredFields" : true,
320+
"allPublicFields" : true,
321+
"queryAllPublicConstructors" : true,
322+
"queryAllDeclaredConstructors" : true,
323+
"queryAllPublicMethods" : true,
324+
"queryAllDeclaredMethods" : true
286325
}
287326
]

0 commit comments

Comments
 (0)