diff --git a/extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcClientProcessor.java b/extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcClientProcessor.java index b4eca2f58b59a7..8988ea192755b2 100644 --- a/extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcClientProcessor.java +++ b/extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcClientProcessor.java @@ -14,6 +14,7 @@ import javax.enterprise.inject.spi.DeploymentException; import javax.inject.Singleton; +import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem; import org.eclipse.microprofile.config.Config; import org.eclipse.microprofile.config.ConfigProvider; import org.jboss.jandex.AnnotationInstance; @@ -175,6 +176,12 @@ void registerSslResources(BuildProducer resourceBu registerResourcesForProperties(config, resourceBuildItem, TRUST_STORE_PATTERN, CERTIFICATE_PATTERN, KEY_PATTERN); } + @BuildStep + void runtimeInitialize(BuildProducer producer) { + // io.grpc.internal.RetriableStream uses j.u.Ramdom, so needs to be runtime-initialized + producer.produce(new RuntimeInitializedClassBuildItem("io.grpc.internal.RetriableStream")); + } + private void generateChannelProducer(MethodCreator mc, GrpcServiceBuildItem svc) { ResultHandle name = mc.load(svc.getServiceName()); ResultHandle result = mc.invokeStaticMethod(CREATE_CHANNEL_METHOD, name);