Closed hieunc278 closed 2 years ago
/cc @cescoffier, @geoand, @ozangunalp
That's expected. We do not support Protobuf in native mode yet. Protobuf and json schema are on the backlog, but they were not addressed yet.
Oh thank you so much for your quick response @cescoffier.
So as far as I understand, currently we could use Avro serdes in native mode. Is it correct ?
Yes, Avro works in native.
We will be adding the others, but I cannot give you an ETA.
Dear @cescoffier,
Thank you again for your feedback. If so, we will use Avro first until ProtoBuf is supported in native mode as well.
And I will close it also.
anyway, does we could see that backlog item at GitHub also ?
Here it is: https://github.com/quarkusio/quarkus/issues/3041
Dear @cescoffier,
Thanks for your information. I got it now.
Anyway, I also met another issue while trying to use Avro in Native mode, but I do not sure that it cause by Apicurio-registry or Quarkus as well.
Here is back-trace when I started with NoSuchElement exception as well
2021-12-11 05:22:43,931 ERROR [io.sma.rea.mes.provider] (main) SRMSG00230: Unable to create the publisher or subscriber during initialization: org.apache.kafka.common.KafkaException: java.lang.IllegalStateException: java.util.NoSuchElementException
at io.smallrye.reactive.messaging.kafka.impl.ReactiveKafkaProducer.configureSerializer(ReactiveKafkaProducer.java:89)
at io.smallrye.reactive.messaging.kafka.impl.ReactiveKafkaProducer.
2021-12-11 05:22:43,944 ERROR [io.qua.run.Application] (main) Failed to start application (with profile prod): java.util.NoSuchElementException
at java.util.ServiceLoader$2.next(ServiceLoader.java:1309)
at java.util.ServiceLoader$2.next(ServiceLoader.java:1297)
at java.util.ServiceLoader$3.next(ServiceLoader.java:1395)
at io.apicurio.registry.rest.client.RegistryClientFactory.resolveProviderInstance(RegistryClientFactory.java:110)
at io.apicurio.registry.rest.client.RegistryClientFactory.create(RegistryClientFactory.java:81)
at io.apicurio.registry.rest.client.RegistryClientFactory.create(RegistryClientFactory.java:73)
at io.apicurio.registry.serde.AbstractSchemaResolver.configure(AbstractSchemaResolver.java:87)
at io.apicurio.registry.serde.DefaultSchemaResolver.configure(DefaultSchemaResolver.java:63)
at io.apicurio.registry.serde.SchemaResolverConfigurer.configure(SchemaResolverConfigurer.java:78)
at io.apicurio.registry.serde.AbstractKafkaSerDe.configure(AbstractKafkaSerDe.java:69)
at io.apicurio.registry.serde.avro.AvroKafkaSerializer.configure(AvroKafkaSerializer.java:88)
at io.smallrye.reactive.messaging.kafka.impl.ReactiveKafkaProducer.configureSerializer(ReactiveKafkaProducer.java:87)
at io.smallrye.reactive.messaging.kafka.impl.ReactiveKafkaProducer.
Could you please help me by review this also ?
Dear @cescoffier ,
As I checked it again, it seems that the application could not find any instance of ApicurioHttpClientProvider, so when it call next() of this line
serviceLoader.providers(true).next();
it throw NoSuchElement exception as well. However, I haven't found any ideas to resolve it. Please support me
Which version are you using? Can you provide a reproducer?
Dear @cescoffier,
Thanks for your feedback as well.
Version is 2.1.2.Final for both Quarkus and Apicurio.
I will try to create re-procedure code based on our current project.
As we saw, at normal case, it seems that ApicurioHttpClientProvider was set properly when starting to io.apicurio.rest.client.VertxHttpClientProvider by this method setProvider(ApicurioHttpClientProvider provider) of RegistryClientFactory.
But I still don't know why it was not called with my native, even it same pom file as well.
my pom file is :
`<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
`
Hum, I think you mix an old apicurio extension from the quarkiverse with some new stuff. Please check https://github.com/quarkusio/quarkus-quickstarts/tree/main/kafka-avro-schema-quickstart.
Dear @cescoffier ,
Thanks for your long supports as well.
It seems that you are right. It was resolved by removed Apicurio version when I added dependency.
--> From
--> To
After edited, it will pull properly Apicurio version and work normally.
Now I could use with Avro through Kafka correctly.
Describe the bug
Currently, when we config to use ProtobufKafkaSerializer ( io.apicurio.registry.serde.protobuf.ProtobufKafkaSerializer ), it work normal in JVM Mode, but it has error when start in Native Mode
2021-12-09 07:13:14,661 ERROR [io.qua.run.Application] (main) Failed to start application (with profile prod): java.lang.ClassNotFoundException: io.apicurio.registry.serde.protobuf.ProtobufKafkaSerializer at com.oracle.svm.core.hub.ClassForNameSupport.forName(ClassForNameSupport.java:64) at java.lang.Class.forName(DynamicHub.java:1308) at org.apache.kafka.common.utils.Utils.loadClass(Utils.java:380) at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:369) at io.smallrye.reactive.messaging.kafka.impl.ReactiveKafkaProducer.createSerializer(ReactiveKafkaProducer.java:71) at io.smallrye.reactive.messaging.kafka.impl.ReactiveKafkaProducer.(ReactiveKafkaProducer.java:58)
at io.smallrye.reactive.messaging.kafka.impl.ReactiveKafkaProducer.(ReactiveKafkaProducer.java:43)
at io.smallrye.reactive.messaging.kafka.impl.KafkaSink.(KafkaSink.java:76)
at io.smallrye.reactive.messaging.kafka.KafkaConnector.getSubscriberBuilder(KafkaConnector.java:227)
at io.smallrye.reactive.messaging.kafka.KafkaConnector_ClientProxy.getSubscriberBuilder(KafkaConnector_ClientProxy.zig:368)
at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.createSubscriberBuilder(ConfiguredChannelFactory.java:207)
at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.register(ConfiguredChannelFactory.java:164)
at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory.initialize(ConfiguredChannelFactory.java:125)
at io.smallrye.reactive.messaging.impl.ConfiguredChannelFactory_ClientProxy.initialize(ConfiguredChannelFactory_ClientProxy.zig:189)
at java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
at io.smallrye.reactive.messaging.extension.MediatorManager.start(MediatorManager.java:189)
at io.smallrye.reactive.messaging.extension.MediatorManager_ClientProxy.start(MediatorManager_ClientProxy.zig:220)
at io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle.onApplicationStart(SmallRyeReactiveMessagingLifecycle.java:41)
at io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle_Observer_onApplicationStart_4e8937813d9e8faff65c3c07f88fa96615b70e70.notify(SmallRyeReactiveMessagingLifecycle_Observer_onApplicationStart_4e8937813d9e8faff65c3c07f88fa96615b70e70.zig:111)
at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:300)
at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:282)
at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:70)
at io.quarkus.arc.runtime.ArcRecorder.fireLifecycleEvent(ArcRecorder.java:128)
at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:97)
at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy_0(LifecycleEventsBuildStep$startupEvent1144526294.zig:87)
at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy(LifecycleEventsBuildStep$startupEvent1144526294.zig:40)
at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:765)
at io.quarkus.runtime.Application.start(Application.java:101)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:101)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:66)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:42)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:119)
at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:29)
Our Pom file :
Any helps are appreciate.
I saw that we have the similar issue before. but it seems it could not apply in this case.
https://github.com/quarkusio/quarkus/issues/13533
Expected behavior
Use ProtobufKafkaSerializer of Apicurio normally in Native mode
Actual behavior
No response
How to Reproduce?
No response
Output of
uname -a
orver
No response
Output of
java -version
No response
GraalVM version (if different from Java)
No response
Quarkus version or git rev
2.1.2-Final
Build tool (ie. output of
mvnw --version
orgradlew --version
)No response
Additional information
No response