flink-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rui Li (Jira)" <j...@apache.org>
Subject [jira] [Updated] (FLINK-20549) New ExecutionContext doesn't inherit classloader from previous context
Date Wed, 09 Dec 2020 13:35:00 GMT

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

Rui Li updated FLINK-20549:
---------------------------
    Description: 
When users change session properties from SQL client, {{LocalExecutor}} creates a new {{ExecutionContext}}.
The new {{ExecutionContext}} inherits {{SessionState}} from previous session, which means
the loaded Catalog/Module instances are reused. Since Catalog/Module are pluggable, the classes
may come from user jars. However the new {{ExecutionContext}} doesn't inherit classloader
from previous session. That means when the Catalog/Module instances are used, the thread context
classloader and the defining classloader are different.

This can cause problems such as:
# Define a {{HiveModule}} in yaml file. Don't put the hive connector jar under lib folder,
but add it through the {{"-l"}} option when launching the SQL client.
# Run some query using a hive built-in function.
# Change some session property to trigger a re-creation of {{ExecutionContext}}.
# Run the same query again and it would fail because the hive built-in function cannot be
instantiated.

> New ExecutionContext doesn't inherit classloader from previous context
> ----------------------------------------------------------------------
>
>                 Key: FLINK-20549
>                 URL: https://issues.apache.org/jira/browse/FLINK-20549
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Client
>            Reporter: Rui Li
>            Priority: Major
>
> When users change session properties from SQL client, {{LocalExecutor}} creates a new
{{ExecutionContext}}. The new {{ExecutionContext}} inherits {{SessionState}} from previous
session, which means the loaded Catalog/Module instances are reused. Since Catalog/Module
are pluggable, the classes may come from user jars. However the new {{ExecutionContext}} doesn't
inherit classloader from previous session. That means when the Catalog/Module instances are
used, the thread context classloader and the defining classloader are different.
> This can cause problems such as:
> # Define a {{HiveModule}} in yaml file. Don't put the hive connector jar under lib folder,
but add it through the {{"-l"}} option when launching the SQL client.
> # Run some query using a hive built-in function.
> # Change some session property to trigger a re-creation of {{ExecutionContext}}.
> # Run the same query again and it would fail because the hive built-in function cannot
be instantiated.



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

Mime
View raw message