Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Class io.quarkus.kafka.client.serialization.JsonbSerializer not included in native image #4683

Closed
ivangfr opened this issue Oct 20, 2019 · 2 comments · Fixed by #4727
Closed
Labels
kind/bug Something isn't working
Milestone

Comments

@ivangfr
Copy link

ivangfr commented Oct 20, 2019

Describe the bug
After packaging/building my kafka producer-consumer application, when trying to run the docker container that contains the native application, I am facing the error: Class io.quarkus.kafka.client.serialization.JsonbSerializer could not be found

Note: running in dev mode and docker with JVM mode the app works fine

Expected behavior
My application should start normally without the error above

Actual behavior
Here is the stacktrace

ERROR [io.sma.rea.mes.imp.ConfiguredChannelFactory] (main) Unable to create the publisher or subscriber during initialization: org.apache.kafka.common.config.ConfigException: Invalid value io.quarkus.kafka.client.serialization.JsonbSerializer for configuration value.serializer: Class io.quarkus.kafka.client.serialization.JsonbSerializer could not be found.
        at org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:718)
        at org.apache.kafka.common.config.ConfigDef.parseValue(ConfigDef.java:471)
        at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:464)
        at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:62)
        at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:75)
        at org.apache.kafka.clients.producer.ProducerConfig.<init>(ProducerConfig.java:396)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:327)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:271)
        at io.vertx.kafka.client.producer.impl.KafkaWriteStreamImpl.create(KafkaWriteStreamImpl.java:52)
        at io.vertx.kafka.client.producer.KafkaWriteStream.create(KafkaWriteStream.java:92)
        at io.smallrye.reactive.messaging.kafka.KafkaSink.<init>(KafkaSink.java:50)
        at io.smallrye.reactive.messaging.kafka.KafkaConnector.getSubscriberBuilder(KafkaConnector.java:73)
        at io.smallrye.reactive.messaging.kafka.KafkaConnector_ClientProxy.getSubscriberBuilder(KafkaConnector_ClientProxy.zig:283)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.createSubscriberBuilder(ConfiguredChannelFactory.java:156)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.lambda$register$5(ConfiguredChannelFactory.java:124)
        at java.util.HashMap.forEach(HashMap.java:1289)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.register(ConfiguredChannelFactory.java:124)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.initialize(ConfiguredChannelFactory.java:118)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory_ClientProxy.initialize(ConfiguredChannelFactory_ClientProxy.zig:195)
        at java.util.Iterator.forEachRemaining(Iterator.java:116)
        at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
        at io.smallrye.reactive.messaging.extension.MediatorManager.initializeAndRun(MediatorManager.java:132)
        at io.smallrye.reactive.messaging.extension.MediatorManager_ClientProxy.initializeAndRun(MediatorManager_ClientProxy.zig:100)
        at io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle.onApplicationStart(SmallRyeReactiveMessagingLifecycle.java:20)
        at io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle_Observer_onApplicationStart_4e8937813d9e8faff65c3c07f88fa96615b70e70.notify(SmallRyeReactiveMessagingLifecycle_Observer_onApplicationStart_4e8937813d9e8faff65c3c07f88fa96615b70e70.zig:51)
        at io.quarkus.arc.EventImpl$Notifier.notify(EventImpl.java:228)
        at io.quarkus.arc.EventImpl.fire(EventImpl.java:69)
        at io.quarkus.arc.runtime.LifecycleEventRunner.fireStartupEvent(LifecycleEventRunner.java:23)
        at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:103)
        at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent32.deploy_0(LifecycleEventsBuildStep$startupEvent32.zig:77)
        at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent32.deploy(LifecycleEventsBuildStep$startupEvent32.zig:36)
        at io.quarkus.runner.ApplicationImpl1.doStart(ApplicationImpl1.zig:161)
        at io.quarkus.runtime.Application.start(Application.java:93)
        at io.quarkus.runtime.Application.run(Application.java:213)
        at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:34)

javax.enterprise.inject.spi.DeploymentException: org.apache.kafka.common.config.ConfigException: Invalid value io.quarkus.kafka.client.serialization.JsonbSerializer for configuration value.serializer: Class io.quarkus.kafka.client.serialization.JsonbSerializer could not be found.
        at io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle.onApplicationStart(SmallRyeReactiveMessagingLifecycle.java:22)
        at io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle_Observer_onApplicationStart_4e8937813d9e8faff65c3c07f88fa96615b70e70.notify(SmallRyeReactiveMessagingLifecycle_Observer_onApplicationStart_4e8937813d9e8faff65c3c07f88fa96615b70e70.zig:51)
        at io.quarkus.arc.EventImpl$Notifier.notify(EventImpl.java:228)
        at io.quarkus.arc.EventImpl.fire(EventImpl.java:69)
        at io.quarkus.arc.runtime.LifecycleEventRunner.fireStartupEvent(LifecycleEventRunner.java:23)
        at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:103)
        at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent32.deploy_0(LifecycleEventsBuildStep$startupEvent32.zig:77)
        at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent32.deploy(LifecycleEventsBuildStep$startupEvent32.zig:36)
        at io.quarkus.runner.ApplicationImpl1.doStart(ApplicationImpl1.zig:161)
        at io.quarkus.runtime.Application.start(Application.java:93)
        at io.quarkus.runtime.Application.run(Application.java:213)
        at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:34)
Caused by: org.apache.kafka.common.config.ConfigException: Invalid value io.quarkus.kafka.client.serialization.JsonbSerializer for configuration value.serializer: Class io.quarkus.kafka.client.serialization.JsonbSerializer could not be found.
        at org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:718)
        at org.apache.kafka.common.config.ConfigDef.parseValue(ConfigDef.java:471)
        at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:464)
        at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:62)
        at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:75)
        at org.apache.kafka.clients.producer.ProducerConfig.<init>(ProducerConfig.java:396)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:327)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:271)
        at io.vertx.kafka.client.producer.impl.KafkaWriteStreamImpl.create(KafkaWriteStreamImpl.java:52)
        at io.vertx.kafka.client.producer.KafkaWriteStream.create(KafkaWriteStream.java:92)
        at io.smallrye.reactive.messaging.kafka.KafkaSink.<init>(KafkaSink.java:50)
        at io.smallrye.reactive.messaging.kafka.KafkaConnector.getSubscriberBuilder(KafkaConnector.java:73)
        at io.smallrye.reactive.messaging.kafka.KafkaConnector_ClientProxy.getSubscriberBuilder(KafkaConnector_ClientProxy.zig:283)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.createSubscriberBuilder(ConfiguredChannelFactory.java:156)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.lambda$register$5(ConfiguredChannelFactory.java:124)
        at java.util.HashMap.forEach(HashMap.java:1289)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.register(ConfiguredChannelFactory.java:124)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.initialize(ConfiguredChannelFactory.java:118)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory_ClientProxy.initialize(ConfiguredChannelFactory_ClientProxy.zig:195)
        at java.util.Iterator.forEachRemaining(Iterator.java:116)
        at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
        at io.smallrye.reactive.messaging.extension.MediatorManager.initializeAndRun(MediatorManager.java:132)
        at io.smallrye.reactive.messaging.extension.MediatorManager_ClientProxy.initializeAndRun(MediatorManager_ClientProxy.zig:100)
        at io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle.onApplicationStart(SmallRyeReactiveMessagingLifecycle.java:20)
        ... 11 more
INFO  [io.sma.rea.mes.ext.MediatorManager] (main) Cancel subscriptions
Exception in thread "main" java.lang.RuntimeException: Failed to start quarkus
        at io.quarkus.runner.ApplicationImpl1.doStart(ApplicationImpl1.zig:185)
        at io.quarkus.runtime.Application.start(Application.java:93)
        at io.quarkus.runtime.Application.run(Application.java:213)
        at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:34)
Caused by: javax.enterprise.inject.spi.DeploymentException: org.apache.kafka.common.config.ConfigException: Invalid value io.quarkus.kafka.client.serialization.JsonbSerializer for configuration value.serializer: Class io.quarkus.kafka.client.serialization.JsonbSerializer could not be found.
        at io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle.onApplicationStart(SmallRyeReactiveMessagingLifecycle.java:22)
        at io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle_Observer_onApplicationStart_4e8937813d9e8faff65c3c07f88fa96615b70e70.notify(SmallRyeReactiveMessagingLifecycle_Observer_onApplicationStart_4e8937813d9e8faff65c3c07f88fa96615b70e70.zig:51)
        at io.quarkus.arc.EventImpl$Notifier.notify(EventImpl.java:228)
        at io.quarkus.arc.EventImpl.fire(EventImpl.java:69)
        at io.quarkus.arc.runtime.LifecycleEventRunner.fireStartupEvent(LifecycleEventRunner.java:23)
        at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:103)
        at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent32.deploy_0(LifecycleEventsBuildStep$startupEvent32.zig:77)
        at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent32.deploy(LifecycleEventsBuildStep$startupEvent32.zig:36)
        at io.quarkus.runner.ApplicationImpl1.doStart(ApplicationImpl1.zig:161)
        ... 3 more
Caused by: org.apache.kafka.common.config.ConfigException: Invalid value io.quarkus.kafka.client.serialization.JsonbSerializer for configuration value.serializer: Class io.quarkus.kafka.client.serialization.JsonbSerializer could not be found.
        at org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:718)
        at org.apache.kafka.common.config.ConfigDef.parseValue(ConfigDef.java:471)
        at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:464)
        at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:62)
        at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:75)
        at org.apache.kafka.clients.producer.ProducerConfig.<init>(ProducerConfig.java:396)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:327)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:271)
        at io.vertx.kafka.client.producer.impl.KafkaWriteStreamImpl.create(KafkaWriteStreamImpl.java:52)
        at io.vertx.kafka.client.producer.KafkaWriteStream.create(KafkaWriteStream.java:92)
        at io.smallrye.reactive.messaging.kafka.KafkaSink.<init>(KafkaSink.java:50)
        at io.smallrye.reactive.messaging.kafka.KafkaConnector.getSubscriberBuilder(KafkaConnector.java:73)
        at io.smallrye.reactive.messaging.kafka.KafkaConnector_ClientProxy.getSubscriberBuilder(KafkaConnector_ClientProxy.zig:283)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.createSubscriberBuilder(ConfiguredChannelFactory.java:156)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.lambda$register$5(ConfiguredChannelFactory.java:124)
        at java.util.HashMap.forEach(HashMap.java:1289)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.register(ConfiguredChannelFactory.java:124)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.initialize(ConfiguredChannelFactory.java:118)
        at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory_ClientProxy.initialize(ConfiguredChannelFactory_ClientProxy.zig:195)
        at java.util.Iterator.forEachRemaining(Iterator.java:116)
        at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
        at io.smallrye.reactive.messaging.extension.MediatorManager.initializeAndRun(MediatorManager.java:132)
        at io.smallrye.reactive.messaging.extension.MediatorManager_ClientProxy.initializeAndRun(MediatorManager_ClientProxy.zig:100)
        at io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle.onApplicationStart(SmallRyeReactiveMessagingLifecycle.java:20)
        ... 11 more

To Reproduce
Steps to reproduce the behavior:

  1. Create a project with kafka and JSON-B serialization
  2. Build it using native mode
  3. Start it. The error will be during the startup

Configuration

mp.messaging.outgoing.news.connector=smallrye-kafka
mp.messaging.outgoing.news.topic=quarkus.news.json
#mp.messaging.outgoing.news.bootstrap.servers=${KAFKA_HOST:localhost}:${KAFKA_PORT:9092}
%dev.mp.messaging.outgoing.news.bootstrap.servers=localhost:9092
mp.messaging.outgoing.news.bootstrap.servers=kafka:9092
mp.messaging.outgoing.news.value.serializer=io.quarkus.kafka.client.serialization.JsonbSerializer

Screenshots
(If applicable, add screenshots to help explain your problem.)

Environment (please complete the following information):

  • Output of uname -a or ver:
  • Output of java -version:
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-20190711112007.graal.jdk8u-src-tar-gz-b08)
OpenJDK 64-Bit GraalVM CE 19.2.0.1 (build 25.222-b08-jvmci-19.2-b02, mixed mode)
  • GraalVM version (if different from Java):
  • Quarkus version or git rev: 0.25.0

Additional context
(Add any other context about the problem here.)

@ivangfr ivangfr added the kind/bug Something isn't working label Oct 20, 2019
@cescoffier
Copy link
Member

I believe both classes need to be added to the reflection list.

@gsmet gsmet added this to the 0.27.0 milestone Oct 21, 2019
@lhauspie
Copy link
Contributor

Can I work on this one ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants