datastax / cassandra-quarkus

An Apache Cassandra(R) extension for Quarkus
Apache License 2.0
39 stars 28 forks source link

Register MutinyResultProducerService as ServiceProviderBuildItem #174

Closed adutra closed 3 years ago

adutra commented 3 years ago

Oddly enough, this was working before, but it seems that #171 along with driver 4.11.2 + JAVA-2946 introduced a new regression: in DefaultMapperContext, the call to ServiceLoader.load() is now failing when executed in native mode.

The error is:

2021-05-25 17:58:40,614 ERROR [org.jbo.res.res.i18n] (executor-thread-1) RESTEASY002020: Unhandled asynchronous exception, sending back 500: org.jboss.resteasy.spi.ApplicationException: java.lang.IllegalArgumentException: Found no registered MapperResultProducer that can produce io.smallrye.mutiny.Multi<com.datastax.oss.quarkus.tests.entity.Product>
...
Caused by: java.lang.IllegalArgumentException: Found no registered MapperResultProducer that can produce io.smallrye.mutiny.Multi<com.datastax.oss.quarkus.tests.entity.Product>
    at com.datastax.oss.driver.internal.mapper.DefaultMapperContext.lambda$getResultProducer$0(DefaultMapperContext.java:172)
    at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
    at com.datastax.oss.driver.internal.mapper.DefaultMapperContext.getResultProducer(DefaultMapperContext.java:163)
    at com.datastax.oss.quarkus.tests.dao.ProductDaoImpl__MapperGenerated.findAll(ProductDaoImpl__MapperGenerated.java:124)
    at com.datastax.oss.quarkus.tests.mapper.InventoryMapperProducer_ProducerMethod_produceProductDaoSync_fd38713e4f393e9d9b3bd9b244990abb76f43c85_ClientProxy.findAll(InventoryMapperProducer_ProducerMethod_produceProductDaoSync_fd38713e4f393e9d9b3bd9b244990abb76f43c85_ClientProxy.zig:114)
    at com.datastax.oss.quarkus.tests.service.ProductService.findAll(ProductService.java:48)
    at com.datastax.oss.quarkus.tests.service.ProductService_ClientProxy.findAll(ProductService_ClientProxy.zig:126)
    at com.datastax.oss.quarkus.tests.resource.ProductResource.getAllProducts(ProductResource.java:83)

I suggest adding a ServiceProviderBuildItem to register MutinyResultProducerService in CassandraClientProcessor – since this seems to be missing anyways.

┆Issue is synchronized with this Jira Task by Unito