[
https://issues.apache.org/jira/browse/FLINK-11691?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yun Tang updated FLINK-11691:
-----------------------------
Description:
Currently, interface {{ConfigurableStateBackend}} has method definition below:
{code:java}
StateBackend configure(Configuration config) throws
IllegalConfigurationException;
{code}
Actually, we need the class loader for anything needed to instantiate through
reflection when calling {{StateBackend#configure}}. This is really helpful if
we want something to be configurable. Take an example, by providing a class
name via flink-conf.yaml, user could configure anything they want, such as the
{{OptionsFactory}} in {{RocksDBStateBackend}}
([FLINK-10912|https://issues.apache.org/jira/browse/FLINK-10912]) or the
compression decorator in {{StateBackend}}
([FLINK-11313|https://issues.apache.org/jira/browse/FLINK-11313])
On the other hand, interface {{StateBackendFactory}} also has method definition
below, which would then call {{StateBackend#configure}}.
{code:java}
T createFromConfig(Configuration config) throws IllegalConfigurationException,
IOException;
{code}
They were all called mainly in
{{StateBackendLoader#loadStateBackendFromConfig}} and
{{StateBackendLoader#fromApplicationOrConfigOrDefault}}. Those two methods
already have {{ClassLoader}} in their parameters, and it would be easy to pass
the class loader to the {{configure}} methods mentioned above.
{{ConfigurableStateBackend}} has no annotation, from its usage, it should be a
{{'@Internal'}}
was:
Currently, interface {{ConfigurableStateBackend}} has method definition below:
{code:java}
StateBackend configure(Configuration config) throws
IllegalConfigurationException;
{code}
On the other hand, interface {{StateBackendFactory}} has method definition
below:
{code:java}
T createFromConfig(Configuration config) throws IllegalConfigurationException,
IOException;
{code}
They were all called mainly in
{{StateBackendLoader#loadStateBackendFromConfig}} and
{{StateBackendLoader#fromApplicationOrConfigOrDefault}}. Those two methods both
have {{}}
> Introduce ClassLoader in the methods of StateBackendFactory and
> ConfigurableStateBackend
> ----------------------------------------------------------------------------------------
>
> Key: FLINK-11691
> URL: https://issues.apache.org/jira/browse/FLINK-11691
> Project: Flink
> Issue Type: Improvement
> Reporter: Yun Tang
> Priority: Major
> Fix For: 1.8.0
>
>
> Currently, interface {{ConfigurableStateBackend}} has method definition below:
> {code:java}
> StateBackend configure(Configuration config) throws
> IllegalConfigurationException;
> {code}
> Actually, we need the class loader for anything needed to instantiate through
> reflection when calling {{StateBackend#configure}}. This is really helpful if
> we want something to be configurable. Take an example, by providing a class
> name via flink-conf.yaml, user could configure anything they want, such as
> the {{OptionsFactory}} in {{RocksDBStateBackend}}
> ([FLINK-10912|https://issues.apache.org/jira/browse/FLINK-10912]) or the
> compression decorator in {{StateBackend}}
> ([FLINK-11313|https://issues.apache.org/jira/browse/FLINK-11313])
> On the other hand, interface {{StateBackendFactory}} also has method
> definition below, which would then call {{StateBackend#configure}}.
> {code:java}
> T createFromConfig(Configuration config) throws
> IllegalConfigurationException, IOException;
> {code}
> They were all called mainly in
> {{StateBackendLoader#loadStateBackendFromConfig}} and
> {{StateBackendLoader#fromApplicationOrConfigOrDefault}}. Those two methods
> already have {{ClassLoader}} in their parameters, and it would be easy to
> pass the class loader to the {{configure}} methods mentioned above.
> {{ConfigurableStateBackend}} has no annotation, from its usage, it should be
> a {{'@Internal'}}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)