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

StackOverflow exception is thrown if transformation throws exception during configure

XMLWordPrintable

    • False
    • Hide

      None

      Show
      None
    • False

      With any defined transform in application.properties, have the configure method throw an sort of exception, such as ConnectException and Debezium Server spins until it throws a StackOverflow Exception:

      2025-03-10 18:37:01,077 ERROR [io.deb.ser.ins.tra.AbstractAddQnaHeader] (main) The 'name' value is invalid: A value is required
      2025-03-10 18:37:01,078 ERROR [io.deb.ser.ConnectorLifecycle] (main) Connector completed: success = 'false', message = 'Failed to instantiate required class', error = 'org.apache.kafka.connect.errors.ConnectException: Failed to configure transformation, see logs for details': org.apache.kafka.connect.errors.ConnectException: Failed to configure transformation, see logs for details
      	at io.debezium.server.instructlab.transforms.AbstractAddQnaHeader.configure(AbstractAddQnaHeader.java:98)
      	at io.debezium.embedded.Transformations.getTransformation(Transformations.java:78)
      	at io.debezium.embedded.Transformations.<init>(Transformations.java:52)
      	at io.debezium.embedded.async.AsyncEmbeddedEngine.<init>(AsyncEmbeddedEngine.java:178)
      	at io.debezium.embedded.async.AsyncEmbeddedEngine$AsyncEngineBuilder.build(AsyncEmbeddedEngine.java:958)
      	at io.debezium.server.DebeziumServer.start(DebeziumServer.java:176)
      

      which eventually ends in the test suite as:

      java.lang.RuntimeException: java.lang.RuntimeException: Failed to start quarkus
              at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:634)
              at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:718)
              at java.base/java.util.Optional.orElseGet(Optional.java:364)
              at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
              at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
      Caused by: java.lang.RuntimeException: Failed to start quarkus
              at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
              at io.quarkus.runtime.Application.start(Application.java:101)
              at java.base/java.lang.reflect.Method.invoke(Method.java:580)
              at io.quarkus.runner.bootstrap.StartupActionImpl.run(StartupActionImpl.java:305)
              at io.quarkus.test.junit.QuarkusTestExtension.doJavaStart(QuarkusTestExtension.java:248)
              at io.quarkus.test.junit.QuarkusTestExtension.ensureStarted(QuarkusTestExtension.java:601)
              at io.quarkus.test.junit.QuarkusTestExtension.beforeAll(QuarkusTestExtension.java:651)
              ... 1 more
      Caused by: java.lang.StackOverflowError
              at java.base/java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
              at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:61)
              at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:49)
              at io.quarkus.arc.impl.ComputingCache.getValue(ComputingCache.java:40)
              at io.quarkus.arc.impl.ArcContainerImpl.getResolvedBeans(ArcContainerImpl.java:970)
              at io.quarkus.arc.impl.Instances.resolveBeans(Instances.java:41)
              at io.quarkus.arc.impl.Instances.resolveBeans(Instances.java:36)
              at io.quarkus.arc.impl.InstanceImpl.resolve(InstanceImpl.java:339)
              at io.quarkus.arc.impl.InstanceImpl.<init>(InstanceImpl.java:169)
              at io.quarkus.arc.impl.InstanceImpl.forInjection(InstanceImpl.java:130)
              at io.quarkus.arc.impl.InstanceProvider.get(InstanceProvider.java:42)
              at io.quarkus.arc.impl.InstanceProvider.get(InstanceProvider.java:18)
              at io.debezium.server.instructlab.InstructLabSinkConsumer_Bean.doCreate(Unknown Source)
              at io.debezium.server.instructlab.InstructLabSinkConsumer_Bean.create(Unknown Source)
              at io.debezium.server.instructlab.InstructLabSinkConsumer_Bean.create(Unknown Source)
              at io.debezium.server.DebeziumServer.start(DebeziumServer.java:138)
              at io.debezium.server.DebeziumServer_Bean.doCreate(Unknown Source)
              at io.debezium.server.DebeziumServer_Bean.create(Unknown Source)
              at io.debezium.server.DebeziumServer_Bean.create(Unknown Source)
              at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:119)
              at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38)
              at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
              at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.c0(Unknown Source)
              at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.computeIfAbsent(Unknown Source)
              at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35)
              at io.debezium.server.DebeziumServer_Observer_connectorCompleted_MccH1SubLPJTjSGMU5WqErutjC4.notify(Unknown Source)
              at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:351)
              at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:329)
              at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:80)
              at io.debezium.server.ConnectorLifecycle.handle(ConnectorLifecycle.java:89)
              at io.debezium.server.ConnectorLifecycle_ClientProxy.handle(Unknown Source)
              at io.debezium.embedded.async.AsyncEmbeddedEngine.<init>(AsyncEmbeddedEngine.java:186)
      

      This needs to be verified in runtime; this was only via tests, but I suspect a similar outcome most likely.

              Unassigned Unassigned
              ccranfor@redhat.com Chris Cranford
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: