[
https://issues.apache.org/jira/browse/FLINK-15992?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17041642#comment-17041642
]
Jark Wu edited comment on FLINK-15992 at 2/21/20 7:54 AM:
----------------------------------------------------------
Hi [~victor-wong], I re-think about this issue. I think we shouldn't force to
use thread context classloader, otherwise we can't support dynamic classloader
in the future. A better solution might be expose classloader to
{{TableFactory#Context}} which will be supported in FLINK-15912.
cc [~lzljs3620320]
was (Author: jark):
Hi [~victor-wong], I re-think about this issue. I think we shouldn't force to
use thread context classloader, otherwise we can't support dynamic classloader
in the future. A better solution might be expose classloader to
{{TableFactory#Context}} which will be supported in FLINK-15912.
> 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, Table SQL / API, Tests
> Reporter: Victor Wong
> Assignee: Victor Wong
> Priority: Major
> Labels: pull-request-available, test-stability
> Fix For: 1.11.0
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> *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}
> But we have add "org.apache.flink.formats.json.JsonRowFormatFactory" in
> "META-INF/services/org.apache.flink.table.factories.TableFactory", which
> implements DeserializationSchemaFactory.
> *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 flink.
> I think 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)