Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-4621

Debezium UI should use fast-jar again with Quarkus 2.x

XMLWordPrintable

    • False
    • False

      Debezium UI should use fast-jar again with Quarkus 2.x.!
      Since we were updating to Quarkus 2.x we had to switch from fast-jar to uber-jar because of some Classloader security/loading issue.
      Although io.debezium.configserver.service.ConnectorIntegrator is in the same package/module/jar like its implementations (eg PostgresConnectorIntegrator, MysqlConnectorIntegrator, etc) we get some "not a subtype" errors.

      For example:

      2022-01-26 18:50:00,939 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-0) HTTP Request to /api/connector-types/mysql failed, error id: e64fd60e-e058-4d13-a73b-038ac2026bc0-5: java.util.ServiceConfigurationError: io.debezium.configserver.service.ConnectorIntegrator: io.debezium.configserver.service.postgres.PostgresConnectorIntegrator not a subtype
              at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:589)
              at java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:893)
              at java.base/java.util.ServiceLoader$ModuleServicesLookupIterator.hasNext(ServiceLoader.java:1077)
              at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1300)
              at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1385)
              at java.base/java.lang.Iterable.forEach(Iterable.java:74)
              at io.debezium.configserver.rest.ConnectorResource.<init>(ConnectorResource.java:64)
              at io.debezium.configserver.rest.ConnectorResource_Bean.create(Unknown Source)
              at io.debezium.configserver.rest.ConnectorResource_Bean.create(Unknown Source)
              at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:96)
              at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:29)
              at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:26)
              at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
              at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
              at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:26)
              at io.debezium.configserver.rest.ConnectorResource_Bean.get(Unknown Source)
              at io.debezium.configserver.rest.ConnectorResource_Bean.get(Unknown Source)
              at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:440)
              at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:453)
              at io.quarkus.arc.impl.ArcContainerImpl$1.get(ArcContainerImpl.java:277)
              at io.quarkus.arc.impl.ArcContainerImpl$1.get(ArcContainerImpl.java:274)
              at io.quarkus.resteasy.common.runtime.QuarkusConstructorInjector.construct(QuarkusConstructorInjector.java:46)
              at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.createResource(POJOResourceFactory.java:71)
              at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:401)
              at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:69)
              at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)
              at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)
              at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)
              at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
              at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)
              at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)
              at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)
              at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:151)
              at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:91)
              at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:543)
              at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
              at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
              at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
              at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
              at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
              at java.base/java.lang.Thread.run(Thread.java:829)
      

      when collecting the integrators with that code:

              Map<String, ConnectorIntegrator> integrators = new HashMap<>();
      
              ServiceLoader.load(ConnectorIntegrator.class)
                      .forEach(integrator -> integrators.put(integrator.getConnectorType().id, integrator));
      

              ccranfor@redhat.com Chris Cranford
              rk3rn3r René Kerner
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: