[jira] [Created] (FLINK-15992) Incorrect classloader when finding TableFactory

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (FLINK-15992) Incorrect classloader when finding TableFactory

Shang Yuanchun (Jira)
Victor Wong created FLINK-15992:
-----------------------------------

             Summary: Incorrect classloader when finding TableFactory
                 Key: FLINK-15992
                 URL: https://issues.apache.org/jira/browse/FLINK-15992
             Project: Flink
          Issue Type: Bug
          Components: Connectors / Kafka
            Reporter: Victor Wong


*Background*

As a streaming service maintainer in our company, to ensure our users depend on the correct version of Kafka and flink-kafka, we add "flink-connector-kafka" into "fink-dist/lib" directory.

*Problem*

When submitting flink-sql jobs, we encountered below exceptions:
{code:java}
Caused by: org.apache.flink.table.api.NoMatchingTableFactoryException: Could not find a suitable table factory for 'org.apache.flink.table.factories.DeserializationSchemaFactory' in
the classpath.
{code}

*Debug*

We find that it was caused by this:

{code:java}
// org.apache.flink.streaming.connectors.kafka.KafkaTableSourceSinkFactoryBase#getSerializationSchema

                final SerializationSchemaFactory<Row> formatFactory = TableFactoryService.find(
                        SerializationSchemaFactory.class,
                        properties,
                        this.getClass().getClassLoader());
{code}

It uses `this.getClass().getClassLoader()`, which will be BootStrapClassLoader of fink.
We could replace it with `Thread.currentThread().getContextClassLoader()` to solve this.

There is a related issue: https://issues.apache.org/jira/browse/FLINK-15552





--
This message was sent by Atlassian Jira
(v8.3.4#803005)