[ 
https://issues.apache.org/jira/browse/FLINK-15635?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

dalongliu updated FLINK-15635:
------------------------------
    Release Note: 
TableEnvironment introduces a user class loader to have a consistent class 
loading behavior in table programs, SQL Client and SQL Gateway. The user 
classloader manages all user jars such as jar added by `ADD JAR` or `CREATE 
FUNCTION .. USING JAR ..` statements. User-defined 
functions/connectors/catalogs should replace 
`Thread.currentThread().getContextClassLoader()` with the user class loader to 
load classes. Otherwise, ClassNotFoundException maybe thrown. The user class 
loader can be accessed via `FunctionContext#getUserCodeClassLoader`, 
`DynamicTableFactory.Context#getClassLoader` and 
`CatalogFactory.Context#getClassLoader`.  
If you have used thread context classloader to load your user class before 
1.15, after upgrade 1.16, this is an incompatible behavior because of the table 
planner classloader, so you should change your code by using `ADD JAR` syntax 
to add customer jar to planner classloader firstly, then the framework helps 
you to load the class when needed, this simplify your work related with 
classloader.

  was:TableEnvironment introduces a user class loader to have a consistent 
class loading behavior in table programs, SQL Client and SQL Gateway. The user 
classloader manages all user jars such as jar added by `ADD JAR` or `CREATE 
FUNCTION .. USING JAR ..` statements. User-defined 
functions/connectors/catalogs should replace 
`Thread.currentThread().getContextClassLoader()` with the user class loader to 
load classes. Otherwise, ClassNotFoundException maybe thrown. The user class 
loader can be accessed via `FunctionContext#getUserCodeClassLoader`, 
`DynamicTableFactory.Context#getClassLoader` and 
`CatalogFactory.Context#getClassLoader`.


> Allow passing a ClassLoader to EnvironmentSettings
> --------------------------------------------------
>
>                 Key: FLINK-15635
>                 URL: https://issues.apache.org/jira/browse/FLINK-15635
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table SQL / API
>            Reporter: Timo Walther
>            Assignee: Francesco Guardiani
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.16.0
>
>
> We had a couple of class loading issues in the past because people forgot to 
> use the right classloader in {{flink-table}}. The SQL Client executor code 
> hacks a classloader into the planner process by using {{wrapClassLoader}} 
> that sets the threads context classloader.
> Instead we should allow passing a class loader to environment settings. This 
> class loader can be passed to the planner and can be stored in table 
> environment, table config, etc. to have a consistent class loading behavior.
> Having this in place should replace the need for 
> {{Thread.currentThread().getContextClassLoader()}} in the entire 
> {{flink-table}} module.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to