Uploaded image for project: 'Quarkus'
  1. Quarkus
  2. QUARKUS-1042

Runtime initialize grpc class using j.u.Random

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 1.11.7.GA, 1.11.7.ER1
    • None
    • team/eng
    • None

    Description

      This fixes native integration-tests:

      • gRPC - TLS
      • gRPC - Plain Text with gzip compression
      • gRPC - Plain Text with Mutiny
      • gRPC - TLS with mutual auth
      • gRPC - Interceptors
      • gRPC - Proto v2

      with Graal VM 21.1-dev due to banned java.util.Random in the image heap as discussed in https://github.com/quarkusio/quarkus/issues/14904.

      Example failure:
      ```
      Error: Detected an instance of Random/SplittableRandom class in the image heap. Instances created during image generation have cached seed values and don't behave as expected. To see how this object got instantiated use --trace-object-instantiation=java.util.Random. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image runtime by using the option --initialize-at-run-time=<class-name>. Or you can write your own initialization methods and call them explicitly from your main entry point.
      Detailed message:
      Trace: Object was reached by
      reading field io.grpc.internal.RetriableStream.random

      com.oracle.svm.core.util.UserError$UserException: Detected an instance of Random/SplittableRandom class in the image heap. Instances created during image generation have cached seed values and don't behave as expected. To see how this object got instantiated use --trace-object-instantiation=java.util.Random. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image runtime by using the option --initialize-at-run-time=<class-name>. Or you can write your own initialization methods and call them explicitly from your main entry point.
      Detailed message:
      Trace: Object was reached by
      reading field io.grpc.internal.RetriableStream.random

      at com.oracle.svm.core.util.UserError.abort(UserError.java:82)
      at com.oracle.svm.hosted.FallbackFeature.reportAsFallback(FallbackFeature.java:233)
      at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:798)
      at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:582)
      at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$2(NativeImageGenerator.java:495)
      at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
      at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
      at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
      at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
      at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
      at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
      Caused by: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Detected an instance of Random/SplittableRandom class in the image heap. Instances created during image generation have cached seed values and don't behave as expected. To see how this object got instantiated use --trace-object-instantiation=java.util.Random. The object was probably created by a class initializer and is reachable from a static field. You can request class initialization at image runtime by using the option --initialize-at-run-time=<class-name>. Or you can write your own initialization methods and call them explicitly from your main entry point.
      Detailed message:
      Trace: Object was reached by
      reading field io.grpc.internal.RetriableStream.random

      at com.oracle.graal.pointsto.constraints.UnsupportedFeatures.report(UnsupportedFeatures.java:126)
      at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:795)
      ... 8 more
      Error: Image build request failed with exit status 1
      ```

      Attachments

        Activity

          People

            Unassigned Unassigned
            probinso_jira Quarkus JIRA Bot
            Kyrylo Shpak Kyrylo Shpak (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: