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)