hivemq-mqtt-client icon indicating copy to clipboard operation
hivemq-mqtt-client copied to clipboard

Quarkus native builds

Open Tockra opened this issue 5 years ago • 7 comments

Problem or use case

If you want to build a GraalVM(quarkus.io) application and you want to build it native (for low memory usage and fast start up times), the current version won't be ready for the native builds. If you add the maven dependency to the pom.xml the native build fails:

    <dependency>
      <groupId>com.hivemq</groupId>
      <artifactId>hivemq-mqtt-client</artifactId>
      <version>1.2.1</version>
    </dependency>

    <dependency>
      <groupId>com.hivemq</groupId>
      <artifactId>hivemq-mqtt-client-reactor</artifactId>
      <version>1.2.1</version>
    </dependency>
[ERROR] Failed to execute goal io.quarkus:quarkus-maven-plugin:1.6.1.Final:build (default) on project code-with-quarkus: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR]         [error]: Build step io.quarkus.deployment.pkg.steps.NativeImageBuildStep#build threw an exception: java.lang.RuntimeException: Failed to build native image
[ERROR]         at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:371)
[ERROR]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]         at java.base/java.lang.reflect.Method.invoke(Method.java:564)
[ERROR]         at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:932)
[ERROR]         at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
[ERROR]         at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
[ERROR]         at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
[ERROR]         at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
[ERROR]         at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
[ERROR]         at java.base/java.lang.Thread.run(Thread.java:832)
[ERROR]         at org.jboss.threads.JBossThread.run(JBossThread.java:479)
[ERROR] Caused by: java.lang.RuntimeException: Image generation failed. Exit code: 1
[ERROR]         at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.imageGenerationFailed(NativeImageBuildStep.java:421)
[ERROR]         at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:349)
[ERROR]         ... 12 more
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Preferred solution or suggestions

I can use your library with a normal built .jar, but it would be nice to enable the possibility to use it with native builds.

I neither know why the build fails nor how to fix it. But probably you see the advantages in GraalVM(quarkus.io) and you will fix that issue in future so your product will run out of the box with that great api...

T

Tockra avatar Aug 11 '20 11:08 Tockra

Hi @Tockra GraalVM native image should work with the hivemq-mqtt-client. Any more information, more logs or a small reproducer would be very helpful.

SgtSilvio avatar Sep 01 '20 12:09 SgtSilvio

I don't know the difference between GraalVM and quarkus.io. I think quarkus uses GraalVM. But I don't know why the native build doesn't work.

I just have the log of the compile process (see above). If there is interest I could build a minimal example.

Tockra avatar Sep 05 '20 18:09 Tockra

@Tockra Sorry for the long delay. If you are still interested in this, it would really be great if you could provide a minimal reproducer so that we can make this work. Maybe only configuration/documentation is needed.

SgtSilvio avatar Oct 16 '20 14:10 SgtSilvio

Hi @SgtSilvio GraalVM native image should work with the hivemq-mqtt-client. Any more information, more logs or a small reproducer would be very helpful.

Hello, I am using hivemq-mqtt-client 1.2.1 and I am getting below error

[INFO] [io.quarkus.deployment.pkg.steps.JarResultBuildStep] Building native image source jar: /Users/mike/quarkus/mqtt-quickstart/target/mqtt-quickstart-1.0.0-SNAPSHOT-native-image-source-jar/mqtt-quickstart-1.0.0-SNAPSHOT-runner.jar
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Building native image from /Users/mike/quarkus/mqtt-quickstart/target/mqtt-quickstart-1.0.0-SNAPSHOT-native-image-source-jar/mqtt-quickstart-1.0.0-SNAPSHOT-runner.jar
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Running Quarkus native-image plugin on GraalVM 21.1.0 Java 11 CE (Java Version 11.0.11+8-jvmci-21.1-b05)
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildRunner] /Users/mike/.sdkman/candidates/java/21.1.0.r11-grl/bin/native-image -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Duser.language=en -J-Duser.country=US -J-Dfile.encoding=UTF-8 --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy\$BySpaceAndTime -H:+JNI -H:+AllowFoldMethods -jar mqtt-quickstart-1.0.0-SNAPSHOT-runner.jar -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:-AddAllCharsets -H:EnableURLProtocols=http,https -H:-UseServiceLoaderFeature -H:+StackTrace mqtt-quickstart-1.0.0-SNAPSHOT-runner
[mqtt-quickstart-1.0.0-SNAPSHOT-runner:47226]    classlist:   2,334.01 ms,  0.96 GB
[mqtt-quickstart-1.0.0-SNAPSHOT-runner:47226]        (cap):   2,063.35 ms,  0.96 GB
[mqtt-quickstart-1.0.0-SNAPSHOT-runner:47226]        setup:   4,190.47 ms,  0.96 GB
Warning: RecomputeFieldValue.ArrayIndexScale automatic substitution failed. The automatic substitution registration was attempted because a call to jdk.internal.misc.Unsafe.arrayIndexScale(Class) was detected in the static initializer of org.jctools.util.UnsafeRefArrayAccess. Detailed failure reason(s): Could not determine the field where the value produced by the call to jdk.internal.misc.Unsafe.arrayIndexScale(Class) for the array index scale computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store.
To see how the classes got initialized, use --trace-class-initialization=io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf,io.netty.buffer.UnpooledDirectByteBuf,io.netty.buffer.AbstractReferenceCountedByteBuf,io.netty.buffer.UnpooledUnsafeDirectByteBuf
[mqtt-quickstart-1.0.0-SNAPSHOT-runner:47226]     analysis:  14,713.49 ms,  1.70 GB
Error: Classes that should be initialized at run time got initialized during image building:
 io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf
io.netty.buffer.UnpooledDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledDirectByteBuf
io.netty.buffer.AbstractReferenceCountedByteBuf the class was requested to be initialized at run time (from jar:file:///Users/mike/quarkus/mqtt-quickstart/target/mqtt-quickstart-1.0.0-SNAPSHOT-native-image-source-jar/lib/io.netty.netty-buffer-4.1.65.Final.jar!/META-INF/native-image/io.netty/buffer/native-image.properties). To see why io.netty.buffer.AbstractReferenceCountedByteBuf got initialized use --trace-class-initialization=io.netty.buffer.AbstractReferenceCountedByteBuf
io.netty.buffer.UnpooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledUnsafeDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledUnsafeDirectByteBuf

com.oracle.svm.core.util.UserError$UserException: Classes that should be initialized at run time got initialized during image building:
 io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf
io.netty.buffer.UnpooledDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledDirectByteBuf
io.netty.buffer.AbstractReferenceCountedByteBuf the class was requested to be initialized at run time (from jar:file:///Users/mike/quarkus/mqtt-quickstart/target/mqtt-quickstart-1.0.0-SNAPSHOT-native-image-source-jar/lib/io.netty.netty-buffer-4.1.65.Final.jar!/META-INF/native-image/io.netty/buffer/native-image.properties). To see why io.netty.buffer.AbstractReferenceCountedByteBuf got initialized use --trace-class-initialization=io.netty.buffer.AbstractReferenceCountedByteBuf
io.netty.buffer.UnpooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledUnsafeDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledUnsafeDirectByteBuf

	at com.oracle.svm.core.util.UserError.abort(UserError.java:68)
	at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.checkDelayedInitialization(ConfigurableClassInitialization.java:545)

My pom dependencies

    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-arc</artifactId>
    </dependency>
    <dependency>
      <groupId>com.hivemq</groupId>
      <artifactId>hivemq-mqtt-client</artifactId>
      <version>1.2.1</version>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-scheduler</artifactId>
    </dependency>

My bean configuration

    @Singleton
    @Produces
    public Mqtt5BlockingClient mqtt5BlockingClient() {

        //create an MQTT client
        final Mqtt5BlockingClient client = MqttClient.builder()
            .useMqttVersion5()
            .serverHost("blaha.s1.eu.hivemq.cloud")
            .serverPort(8883)
            .sslWithDefaultConfig()
            .automaticReconnectWithDefaultConfig()
            .buildBlocking();

        //connect to HiveMQ Cloud with TLS and username/pw
        Mqtt5ConnAck connAck = client.connectWith()
            .simpleAuth()
            .username("test")
            .password(UTF_8.encode("Test1234"))
            .applySimpleAuth()
            .send();


        return client;

    }

Implementation with simple publisher and subscriberr

@ApplicationScoped
@JBossLog
public class PriceGenerator {

    @Inject
    Mqtt5BlockingClient mqtt5BlockingClient;

    private final Random random = new Random();


    @Scheduled(every = "1s")
    public void generateMessage() {

        mqtt5BlockingClient.publishWith()
            .topic("my/test/topic")
            .payload(String.valueOf(random.nextInt(100)).getBytes(UTF_8))
            .qos(AT_MOST_ONCE)
            .payloadFormatIndicator(Mqtt5PayloadFormatIndicator.UTF_8)
            .send();

    }

    @PostConstruct
    public void init() {

        mqtt5BlockingClient.toAsync()
            .subscribeWith()
            .topicFilter("my/test/topic")
            .qos(AT_LEAST_ONCE)
            .callback(publish -> {
                log.infov("Received message: {0}  ->  {1}", publish.getTopic() ,  UTF_8.decode(publish.getPayload().get()));
            })
            .send();

    }

}

missourian55 avatar Jun 04 '21 16:06 missourian55

Hi @missourian55 see the thread https://github.com/hivemq/hivemq-mqtt-client/issues/467#issuecomment-783204074 where someone else got the Quarkus native build working.

SgtSilvio avatar Jun 06 '21 09:06 SgtSilvio

@SgtSilvio

Thank you! That Substitution suggestion fixed jctools issue. Now I am seeing a Netty compile time issue. I refuse to use quarkus in built Mqtt client because it doesn't support MQTT 5

[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Running Quarkus native-image plugin on GraalVM 21.1.0 Java 11 CE (Java Version 11.0.11+8-jvmci-21.1-b05)
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildRunner] /Users/mike/.sdkman/candidates/java/21.1.0.r11-grl/bin/native-image -J-Dsun.nio.ch.maxUpdateArraySize=100 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dio.netty.leakDetection.level=DISABLED -J-Dio.netty.allocator.maxOrder=3 -J-Duser.language=en -J-Duser.country=US -J-Dfile.encoding=UTF-8 --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy\$BySpaceAndTime -H:+JNI -H:+AllowFoldMethods -jar mqtt-quickstart-1.0.0-SNAPSHOT-runner.jar -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:-AddAllCharsets -H:EnableURLProtocols=http,https -H:-UseServiceLoaderFeature -H:+StackTrace mqtt-quickstart-1.0.0-SNAPSHOT-runner
[mqtt-quickstart-1.0.0-SNAPSHOT-runner:56973]    classlist:   1,938.81 ms,  0.96 GB
[mqtt-quickstart-1.0.0-SNAPSHOT-runner:56973]        (cap):   2,067.30 ms,  0.96 GB
[mqtt-quickstart-1.0.0-SNAPSHOT-runner:56973]        setup:   4,170.54 ms,  0.96 GB
To see how the classes got initialized, use --trace-class-initialization=io.netty.buffer.UnpooledDirectByteBuf,io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf,io.netty.buffer.UnpooledUnsafeDirectByteBuf,io.netty.buffer.AbstractReferenceCountedByteBuf
[mqtt-quickstart-1.0.0-SNAPSHOT-runner:56973]     analysis:  12,529.59 ms,  1.70 GB
Error: Classes that should be initialized at run time got initialized during image building:
 io.netty.buffer.UnpooledDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledDirectByteBuf
io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf
io.netty.buffer.UnpooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledUnsafeDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledUnsafeDirectByteBuf
io.netty.buffer.AbstractReferenceCountedByteBuf the class was requested to be initialized at run time (from jar:file:///Users/mike/quarkus/mqtt-quickstart/target/mqtt-quickstart-1.0.0-SNAPSHOT-native-image-source-jar/lib/io.netty.netty-buffer-4.1.65.Final.jar!/META-INF/native-image/io.netty/buffer/native-image.properties). To see why io.netty.buffer.AbstractReferenceCountedByteBuf got initialized use --trace-class-initialization=io.netty.buffer.AbstractReferenceCountedByteBuf

com.oracle.svm.core.util.UserError$UserException: Classes that should be initialized at run time got initialized during image building:
 io.netty.buffer.UnpooledDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledDirectByteBuf
io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf
io.netty.buffer.UnpooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.UnpooledUnsafeDirectByteBuf got initialized use --trace-class-initialization=io.netty.buffer.UnpooledUnsafeDirectByteBuf
io.netty.buffer.AbstractReferenceCountedByteBuf the class was requested to be initialized at run time (from jar:file:///Users/mike/quarkus/mqtt-quickstart/target/mqtt-quickstart-1.0.0-SNAPSHOT-native-image-source-jar/lib/io.netty.netty-buffer-4.1.65.Final.jar!/META-INF/native-image/io.netty/buffer/native-image.properties). To see why io.netty.buffer.AbstractReferenceCountedByteBuf got initialized use --trace-class-initialization=io.netty.buffer.AbstractReferenceCountedByteBuf

	at com.oracle.svm.core.util.UserError.abort(UserError.java:68)
	at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.checkDelayedInitialization(ConfigurableClassInitialization.java:545)
	at com.oracle.svm.hosted.classinitialization.ClassInitializationFeature.duringAnalysis(ClassInitializationFeature.java:228)
	at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$14(NativeImageGenerator.java:765)
	at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:71)
	at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:765)
	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)
Error: Image build request failed with exit status 1

missourian55 avatar Jun 06 '21 16:06 missourian55

As the stack trace suggested I enabled trace-class-initialization

 --trace-class-initialization=io.netty.buffer.UnpooledDirectByteBuf\\,io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf\\,\
  io.netty.buffer.UnpooledUnsafeDirectByteBuf\\,io.netty.buffer.AbstractReferenceCountedByteBuf

It is pointing to an com.hivemq.client.internal.mqtt.codec.encoder.mqtt3.Mqtt3DisconnectEncoder

com.oracle.svm.core.util.UserError$UserException: Classes that should be initialized at run time got initialized during image building:
 io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). io.quarkus.runner.ApplicationImpl caused initialization of this class with the following trace:
	at io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeDirectByteBuf.<clinit>(UnpooledByteBufAllocator.java)
	at io.netty.buffer.UnpooledByteBufAllocator.newDirectBuffer(UnpooledByteBufAllocator.java:91)
	at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:187)
	at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:178)
	at io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:139)
	at com.hivemq.client.internal.mqtt.codec.encoder.mqtt3.Mqtt3DisconnectEncoder.<clinit>(Mqtt3DisconnectEncoder.java:37)
	at java.lang.Class.forName0(Unknown Source)
	at java.lang.Class.forName(Class.java:398)
	at com.hivemq.client.internal.mqtt.codec.encoder.mqtt3.Mqtt3DisconnectEncoder_Bean.<init>(Mqtt3DisconnectEncoder_Bean.zig:37)
	at io.quarkus.arc.setup.Default_ComponentsProvider.addBeans1(Default_ComponentsProvider.zig:360)
	at io.quarkus.arc.setup.Default_ComponentsProvider.getComponents(Default_ComponentsProvider.zig:38)
	at io.quarkus.arc.impl.ArcContainerImpl.<init>(ArcContainerImpl.java:112)
	at io.quarkus.arc.Arc.initialize(Arc.java:20)
	at io.quarkus.arc.runtime.ArcRecorder.getContainer(ArcRecorder.java:40)
	at io.quarkus.deployment.steps.ArcProcessor$generateResources-1025303321.deploy_0(ArcProcessor$generateResources-1025303321.zig:76)
	at io.quarkus.deployment.steps.ArcProcessor$generateResources-1025303321.deploy(ArcProcessor$generateResources-1025303321.zig:40)
	at io.quarkus.runner.ApplicationImpl.<clinit>(ApplicationImpl.zig:128)

io.netty.buffer.AbstractReferenceCountedByteBuf the class was requested to be initialized at run time (from jar:file:///Users/mike/quarkus/mqtt-quickstart/target/mqtt-quickstart-1.0.0-SNAPSHOT-native-image-source-jar/lib/io.netty.netty-buffer-4.1.65.Final.jar!/META-INF/native-image/io.netty/buffer/native-image.properties). io.quarkus.runner.ApplicationImpl caused initialization of this class with the following trace:
	at io.netty.buffer.AbstractReferenceCountedByteBuf.<clinit>(AbstractReferenceCountedByteBuf.java:27)
	at io.netty.buffer.UnpooledByteBufAllocator.newDirectBuffer(UnpooledByteBufAllocator.java:91)
	at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:187)
	at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:178)
	at io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:139)
	at com.hivemq.client.internal.mqtt.codec.encoder.mqtt3.Mqtt3DisconnectEncoder.<clinit>(Mqtt3DisconnectEncoder.java:37)
	at java.lang.Class.forName0(Unknown Source)
	at java.lang.Class.forName(Class.java:398)
	at com.hivemq.client.internal.mqtt.codec.encoder.mqtt3.Mqtt3DisconnectEncoder_Bean.<init>(Mqtt3DisconnectEncoder_Bean.zig:37)
	at io.quarkus.arc.setup.Default_ComponentsProvider.addBeans1(Default_ComponentsProvider.zig:360)
	at io.quarkus.arc.setup.Default_ComponentsProvider.getComponents(Default_ComponentsProvider.zig:38)
	at io.quarkus.arc.impl.ArcContainerImpl.<init>(ArcContainerImpl.java:112)
	at io.quarkus.arc.Arc.initialize(Arc.java:20)
	at io.quarkus.arc.runtime.ArcRecorder.getContainer(ArcRecorder.java:40)
	at io.quarkus.deployment.steps.ArcProcessor$generateResources-1025303321.deploy_0(ArcProcessor$generateResources-1025303321.zig:76)
	at io.quarkus.deployment.steps.ArcProcessor$generateResources-1025303321.deploy(ArcProcessor$generateResources-1025303321.zig:40)
	at io.quarkus.runner.ApplicationImpl.<clinit>(ApplicationImpl.zig:128)

io.netty.buffer.UnpooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). io.quarkus.runner.ApplicationImpl caused initialization of this class with the following trace:
	at io.netty.buffer.UnpooledUnsafeDirectByteBuf.<clinit>(UnpooledUnsafeDirectByteBuf.java)
	at io.netty.buffer.UnpooledByteBufAllocator.newDirectBuffer(UnpooledByteBufAllocator.java:91)
	at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:187)
	at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:178)
	at io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:139)
	at com.hivemq.client.internal.mqtt.codec.encoder.mqtt3.Mqtt3DisconnectEncoder.<clinit>(Mqtt3DisconnectEncoder.java:37)
	at java.lang.Class.forName0(Unknown Source)
	at java.lang.Class.forName(Class.java:398)
	at com.hivemq.client.internal.mqtt.codec.encoder.mqtt3.Mqtt3DisconnectEncoder_Bean.<init>(Mqtt3DisconnectEncoder_Bean.zig:37)
	at io.quarkus.arc.setup.Default_ComponentsProvider.addBeans1(Default_ComponentsProvider.zig:360)
	at io.quarkus.arc.setup.Default_ComponentsProvider.getComponents(Default_ComponentsProvider.zig:38)
	at io.quarkus.arc.impl.ArcContainerImpl.<init>(ArcContainerImpl.java:112)
	at io.quarkus.arc.Arc.initialize(Arc.java:20)
	at io.quarkus.arc.runtime.ArcRecorder.getContainer(ArcRecorder.java:40)
	at io.quarkus.deployment.steps.ArcProcessor$generateResources-1025303321.deploy_0(ArcProcessor$generateResources-1025303321.zig:76)
	at io.quarkus.deployment.steps.ArcProcessor$generateResources-1025303321.deploy(ArcProcessor$generateResources-1025303321.zig:40)
	at io.quarkus.runner.ApplicationImpl.<clinit>(ApplicationImpl.zig:128)

io.netty.buffer.UnpooledDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). io.quarkus.runner.ApplicationImpl caused initialization of this class with the following trace:
	at io.netty.buffer.UnpooledDirectByteBuf.<clinit>(UnpooledDirectByteBuf.java)
	at io.netty.buffer.UnpooledByteBufAllocator.newDirectBuffer(UnpooledByteBufAllocator.java:91)
	at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:187)
	at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:178)
	at io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:139)
	at com.hivemq.client.internal.mqtt.codec.encoder.mqtt3.Mqtt3DisconnectEncoder.<clinit>(Mqtt3DisconnectEncoder.java:37)
	at java.lang.Class.forName0(Unknown Source)
	at java.lang.Class.forName(Class.java:398)
	at com.hivemq.client.internal.mqtt.codec.encoder.mqtt3.Mqtt3DisconnectEncoder_Bean.<init>(Mqtt3DisconnectEncoder_Bean.zig:37)
	at io.quarkus.arc.setup.Default_ComponentsProvider.addBeans1(Default_ComponentsProvider.zig:360)
	at io.quarkus.arc.setup.Default_ComponentsProvider.getComponents(Default_ComponentsProvider.zig:38)
	at io.quarkus.arc.impl.ArcContainerImpl.<init>(ArcContainerImpl.java:112)
	at io.quarkus.arc.Arc.initialize(Arc.java:20)
	at io.quarkus.arc.runtime.ArcRecorder.getContainer(ArcRecorder.java:40)
	at io.quarkus.deployment.steps.ArcProcessor$generateResources-1025303321.deploy_0(ArcProcessor$generateResources-1025303321.zig:76)
	at io.quarkus.deployment.steps.ArcProcessor$generateResources-1025303321.deploy(ArcProcessor$generateResources-1025303321.zig:40)
	at io.quarkus.runner.ApplicationImpl.<clinit>(ApplicationImpl.zig:128)


	at com.oracle.svm.core.util.UserError.abort(UserError.java:68)
	at com.oracle.svm.hosted.classinitialization.ConfigurableClassInitialization.checkDelayedInitialization(ConfigurableClassInitialization.java:545)
	at com.oracle.svm.hosted.classinitialization.ClassInitializationFeature.duringAnalysis(ClassInitializationFeature.java:228)
	at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$14(NativeImageGenerator.java:765)
	at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:71)
	at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:765)
	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)
Error: Image build request failed with exit status 1

missourian55 avatar Jun 06 '21 16:06 missourian55

Same here - this issue has gone stale. If anything remains, please let us know otherwise I'll close out this issue soon.

pglombardo avatar Mar 07 '23 15:03 pglombardo