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

Use TCCL as the default classloader to load interface implementations


      Unless there is a specific reason to use getClass().getClassLoader() as the default class loader, Thread.currentThread().getContextClassLoader() would be a safer default from the integration perspective with environments that define their own classloading policies.

      The original issue was reported in Quarkus quarkusio/quarkus#27565. When a project contains a custom converter implementation, the CommonConnectorConfig in the Debezium core (which is an external project dependency) loading converter classes may fail with a class loading exception. What happens in in this case is Quarkus loads the local project dependencies in a classloader that is higher in the hierarchy than the classloader loading the core Debezium classes, making the CommonConnectorConfig to look for converter implementations among the core Debezium classes and the system classloader, which may lead to a failure.

            Unassigned Unassigned
            olubyans@redhat.com Alexey Loubyansky
            0 Vote for this issue
            3 Start watching this issue