Re: [DISCUSS] FLIP-391: Deprecate RuntimeContext#getExecutionConfig

2023-11-20 Thread Jing Ge via user
Hi Junrui,

Thanks for the clarification. On one hand, adding more methods into the
RuntimeContext flat will increase the effort for users who will use
RuntimeContext. But the impact is limited. It is fine. The big impact is,
on the other hand, for users who want to focus on the execution config,
they will need to find the needle in the haystack.

I just shared my thoughts and tried to help you look at the issue from many
different angles and I am open to learning opinions from other
contributors. Please feel free to proceed if there are no other objections.

Best regards,
Jing

On Mon, Nov 20, 2023 at 6:50 AM Junrui Lee  wrote:

> Hi Jing,
>
> Thank you for your feedback. I understand your concerns regarding putting
> all methods into the RuntimeContext flat.
>
> I would like to share some of my thoughts on this matter.
> Firstly, this FLIP only proposes the addition of three additional methods,
> which should not impose too much extra burden on users. Secondly, I agree
> that it is important to make it clearer for users to use the
> RuntimeContext. However, reorganizing the RuntimeContext to achieve this
> requires further discussion. We should focus on a more specific and unified
> reorganization of the RuntimeContext interface in future work, rather than
> implementing a temporary solution now. Therefore, I prefer not to add a
> separate abstraction layer for these three methods in this FLIP.
>
> Please feel free to share any further thoughts.
>
> Best regards,
> Junrui
>
> Jing Ge  于2023年11月20日周一 05:46写道:
>
>> Hi Junrui,
>>
>> Thanks for bringing this to our attention. First of all, it makes sense
>> to deprecate RuntimeContext#getExecutionConfig.
>>
>> Afaic, this is an issue of how we design API with clean concepts/aspects.
>> There are two issues mentioned in the FLIP:
>>
>> 1. short of user-facing abstraction - we just exposed ExecutionConfig
>> which mixed methods for users with methods that should only be used
>> internally.
>> 2. mutable vs immutable - do we want users to be able to modify configs
>> during job execution?
>>
>> An immutable user-facing abstraction design can solve both issues. All
>> execution related configs are still consolidated into the abstraction class
>> and easy to access. This is another design decision: flat vs. hierarchical.
>> Current FLIP removed the execution config abstraction and put all methods
>> into RuntimeContext flat, which will end up with more than 30 methods
>> offered flat by the RuntimeContext. I am not sure if this could help users
>> find the right method in the context of execution config better than
>> before.
>>
>> I might miss something and look forward to your thoughts. Thanks!
>>
>> Best regards,
>> Jing
>>
>> On Sat, Nov 18, 2023 at 11:21 AM Junrui Lee  wrote:
>>
>>> Hello Wencong,
>>>
>>> Thank you for your valuable feedback and suggestions. I want to clarify
>>> that reviewing existing methods in the ExecutionConfig is not directly
>>> related to the proposal in this FLIP. The main focus of this FLIP is to
>>> deprecate the specific method RuntimeContext#getExecutionConfig(). I
>>> believe it is important to keep the scope of this FLIP limited. However,
>>> your suggestion can certainly be considered as a separate FLIP in the
>>> future.
>>>
>>> Best regards,
>>> Junrui
>>>
>>> Wencong Liu  于2023年11月17日周五 22:08写道:
>>>
 Hello Junrui,


 Thanks for the effort. I agree with the proposal to deprecate the
 getExecutionConfig() method in the RuntimeContext class. Exposing
 the complex ExecutionConfig to user-defined functions can lead to
 unnecessary complexity and risks.


 I also have a suggestion. We could consider reviewing the existing
  methods in ExecutionConfig. If there are methods that are defined
  in ExecutionConfig but currently have no callers, we could consider
  annotating  them as @Internal or directly removing them. Since
 users are no longer able to access and invoke these methods,
 it would be beneficial to clean up the codebase.


 +1 (non-binding).


 Best,
 Wencong



















 At 2023-11-15 16:51:15, "Junrui Lee"  wrote:
 >Hi all,
 >
 >I'd like to start a discussion of FLIP-391: Deprecate
 >RuntimeContext#getExecutionConfig[1].
 >
 >Currently, the FLINK RuntimeContext is important for connecting user
 >functions to the underlying runtime details. It provides users with
 >necessary runtime information during job execution.
 >However, he current implementation of the FLINK RuntimeContext exposes
 the
 >ExecutionConfig to users, resulting in two issues:
 >Firstly, the ExecutionConfig contains much unrelated information that
 can
 >confuse users and complicate management.
 >Secondly, exposing the ExecutionConfig allows users to modify it
 during job
 >execution, which can cause 

Re: [DISCUSS] FLIP-391: Deprecate RuntimeContext#getExecutionConfig

2023-11-19 Thread Junrui Lee
Hi Jing,

Thank you for your feedback. I understand your concerns regarding putting
all methods into the RuntimeContext flat.

I would like to share some of my thoughts on this matter.
Firstly, this FLIP only proposes the addition of three additional methods,
which should not impose too much extra burden on users. Secondly, I agree
that it is important to make it clearer for users to use the
RuntimeContext. However, reorganizing the RuntimeContext to achieve this
requires further discussion. We should focus on a more specific and unified
reorganization of the RuntimeContext interface in future work, rather than
implementing a temporary solution now. Therefore, I prefer not to add a
separate abstraction layer for these three methods in this FLIP.

Please feel free to share any further thoughts.

Best regards,
Junrui

Jing Ge  于2023年11月20日周一 05:46写道:

> Hi Junrui,
>
> Thanks for bringing this to our attention. First of all, it makes sense to
> deprecate RuntimeContext#getExecutionConfig.
>
> Afaic, this is an issue of how we design API with clean concepts/aspects.
> There are two issues mentioned in the FLIP:
>
> 1. short of user-facing abstraction - we just exposed ExecutionConfig
> which mixed methods for users with methods that should only be used
> internally.
> 2. mutable vs immutable - do we want users to be able to modify configs
> during job execution?
>
> An immutable user-facing abstraction design can solve both issues. All
> execution related configs are still consolidated into the abstraction class
> and easy to access. This is another design decision: flat vs. hierarchical.
> Current FLIP removed the execution config abstraction and put all methods
> into RuntimeContext flat, which will end up with more than 30 methods
> offered flat by the RuntimeContext. I am not sure if this could help users
> find the right method in the context of execution config better than
> before.
>
> I might miss something and look forward to your thoughts. Thanks!
>
> Best regards,
> Jing
>
> On Sat, Nov 18, 2023 at 11:21 AM Junrui Lee  wrote:
>
>> Hello Wencong,
>>
>> Thank you for your valuable feedback and suggestions. I want to clarify
>> that reviewing existing methods in the ExecutionConfig is not directly
>> related to the proposal in this FLIP. The main focus of this FLIP is to
>> deprecate the specific method RuntimeContext#getExecutionConfig(). I
>> believe it is important to keep the scope of this FLIP limited. However,
>> your suggestion can certainly be considered as a separate FLIP in the
>> future.
>>
>> Best regards,
>> Junrui
>>
>> Wencong Liu  于2023年11月17日周五 22:08写道:
>>
>>> Hello Junrui,
>>>
>>>
>>> Thanks for the effort. I agree with the proposal to deprecate the
>>> getExecutionConfig() method in the RuntimeContext class. Exposing
>>> the complex ExecutionConfig to user-defined functions can lead to
>>> unnecessary complexity and risks.
>>>
>>>
>>> I also have a suggestion. We could consider reviewing the existing
>>>  methods in ExecutionConfig. If there are methods that are defined
>>>  in ExecutionConfig but currently have no callers, we could consider
>>>  annotating  them as @Internal or directly removing them. Since
>>> users are no longer able to access and invoke these methods,
>>> it would be beneficial to clean up the codebase.
>>>
>>>
>>> +1 (non-binding).
>>>
>>>
>>> Best,
>>> Wencong
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> At 2023-11-15 16:51:15, "Junrui Lee"  wrote:
>>> >Hi all,
>>> >
>>> >I'd like to start a discussion of FLIP-391: Deprecate
>>> >RuntimeContext#getExecutionConfig[1].
>>> >
>>> >Currently, the FLINK RuntimeContext is important for connecting user
>>> >functions to the underlying runtime details. It provides users with
>>> >necessary runtime information during job execution.
>>> >However, he current implementation of the FLINK RuntimeContext exposes
>>> the
>>> >ExecutionConfig to users, resulting in two issues:
>>> >Firstly, the ExecutionConfig contains much unrelated information that
>>> can
>>> >confuse users and complicate management.
>>> >Secondly, exposing the ExecutionConfig allows users to modify it during
>>> job
>>> >execution, which can cause inconsistencies and problems, especially with
>>> >operator chaining.
>>> >
>>> >Therefore, we propose deprecating the RuntimeContext#getExecutionConfig
>>> in
>>> >the FLINK RuntimeContext. In the upcoming FLINK-2.0 version, we plan to
>>> >completely remove the RuntimeContext#getExecutionConfig method.
>>> Instead, we
>>> >will introduce alternative getter methods that enable users to access
>>> >specific information without exposing unnecessary runtime details. These
>>> >getter methods will include:
>>> >
>>> >1. @PublicEvolving  TypeSerializer
>>> >createSerializer(TypeInformation typeInformation);
>>> >2. @PublicEvolving Map getGlobalJobParameters();
>>> >3. @PublicEvolving boolean isObjectReuseEnabled();
>>> >
>>> >Looking forward to your feedback and suggestions, thanks.

Re: [DISCUSS] FLIP-391: Deprecate RuntimeContext#getExecutionConfig

2023-11-19 Thread Jing Ge via user
Hi Junrui,

Thanks for bringing this to our attention. First of all, it makes sense to
deprecate RuntimeContext#getExecutionConfig.

Afaic, this is an issue of how we design API with clean concepts/aspects.
There are two issues mentioned in the FLIP:

1. short of user-facing abstraction - we just exposed ExecutionConfig which
mixed methods for users with methods that should only be used internally.
2. mutable vs immutable - do we want users to be able to modify configs
during job execution?

An immutable user-facing abstraction design can solve both issues. All
execution related configs are still consolidated into the abstraction class
and easy to access. This is another design decision: flat vs. hierarchical.
Current FLIP removed the execution config abstraction and put all methods
into RuntimeContext flat, which will end up with more than 30 methods
offered flat by the RuntimeContext. I am not sure if this could help users
find the right method in the context of execution config better than
before.

I might miss something and look forward to your thoughts. Thanks!

Best regards,
Jing

On Sat, Nov 18, 2023 at 11:21 AM Junrui Lee  wrote:

> Hello Wencong,
>
> Thank you for your valuable feedback and suggestions. I want to clarify
> that reviewing existing methods in the ExecutionConfig is not directly
> related to the proposal in this FLIP. The main focus of this FLIP is to
> deprecate the specific method RuntimeContext#getExecutionConfig(). I
> believe it is important to keep the scope of this FLIP limited. However,
> your suggestion can certainly be considered as a separate FLIP in the
> future.
>
> Best regards,
> Junrui
>
> Wencong Liu  于2023年11月17日周五 22:08写道:
>
>> Hello Junrui,
>>
>>
>> Thanks for the effort. I agree with the proposal to deprecate the
>> getExecutionConfig() method in the RuntimeContext class. Exposing
>> the complex ExecutionConfig to user-defined functions can lead to
>> unnecessary complexity and risks.
>>
>>
>> I also have a suggestion. We could consider reviewing the existing
>>  methods in ExecutionConfig. If there are methods that are defined
>>  in ExecutionConfig but currently have no callers, we could consider
>>  annotating  them as @Internal or directly removing them. Since
>> users are no longer able to access and invoke these methods,
>> it would be beneficial to clean up the codebase.
>>
>>
>> +1 (non-binding).
>>
>>
>> Best,
>> Wencong
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> At 2023-11-15 16:51:15, "Junrui Lee"  wrote:
>> >Hi all,
>> >
>> >I'd like to start a discussion of FLIP-391: Deprecate
>> >RuntimeContext#getExecutionConfig[1].
>> >
>> >Currently, the FLINK RuntimeContext is important for connecting user
>> >functions to the underlying runtime details. It provides users with
>> >necessary runtime information during job execution.
>> >However, he current implementation of the FLINK RuntimeContext exposes
>> the
>> >ExecutionConfig to users, resulting in two issues:
>> >Firstly, the ExecutionConfig contains much unrelated information that can
>> >confuse users and complicate management.
>> >Secondly, exposing the ExecutionConfig allows users to modify it during
>> job
>> >execution, which can cause inconsistencies and problems, especially with
>> >operator chaining.
>> >
>> >Therefore, we propose deprecating the RuntimeContext#getExecutionConfig
>> in
>> >the FLINK RuntimeContext. In the upcoming FLINK-2.0 version, we plan to
>> >completely remove the RuntimeContext#getExecutionConfig method. Instead,
>> we
>> >will introduce alternative getter methods that enable users to access
>> >specific information without exposing unnecessary runtime details. These
>> >getter methods will include:
>> >
>> >1. @PublicEvolving  TypeSerializer
>> >createSerializer(TypeInformation typeInformation);
>> >2. @PublicEvolving Map getGlobalJobParameters();
>> >3. @PublicEvolving boolean isObjectReuseEnabled();
>> >
>> >Looking forward to your feedback and suggestions, thanks.
>> >
>> >[1]
>> >
>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=278465937
>> >
>> >Best regards,
>> >Junrui
>>
>


Re: [DISCUSS] FLIP-391: Deprecate RuntimeContext#getExecutionConfig

2023-11-18 Thread Junrui Lee
Hello Wencong,

Thank you for your valuable feedback and suggestions. I want to clarify
that reviewing existing methods in the ExecutionConfig is not directly
related to the proposal in this FLIP. The main focus of this FLIP is to
deprecate the specific method RuntimeContext#getExecutionConfig(). I
believe it is important to keep the scope of this FLIP limited. However,
your suggestion can certainly be considered as a separate FLIP in the
future.

Best regards,
Junrui

Wencong Liu  于2023年11月17日周五 22:08写道:

> Hello Junrui,
>
>
> Thanks for the effort. I agree with the proposal to deprecate the
> getExecutionConfig() method in the RuntimeContext class. Exposing
> the complex ExecutionConfig to user-defined functions can lead to
> unnecessary complexity and risks.
>
>
> I also have a suggestion. We could consider reviewing the existing
>  methods in ExecutionConfig. If there are methods that are defined
>  in ExecutionConfig but currently have no callers, we could consider
>  annotating  them as @Internal or directly removing them. Since
> users are no longer able to access and invoke these methods,
> it would be beneficial to clean up the codebase.
>
>
> +1 (non-binding).
>
>
> Best,
> Wencong
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> At 2023-11-15 16:51:15, "Junrui Lee"  wrote:
> >Hi all,
> >
> >I'd like to start a discussion of FLIP-391: Deprecate
> >RuntimeContext#getExecutionConfig[1].
> >
> >Currently, the FLINK RuntimeContext is important for connecting user
> >functions to the underlying runtime details. It provides users with
> >necessary runtime information during job execution.
> >However, he current implementation of the FLINK RuntimeContext exposes the
> >ExecutionConfig to users, resulting in two issues:
> >Firstly, the ExecutionConfig contains much unrelated information that can
> >confuse users and complicate management.
> >Secondly, exposing the ExecutionConfig allows users to modify it during
> job
> >execution, which can cause inconsistencies and problems, especially with
> >operator chaining.
> >
> >Therefore, we propose deprecating the RuntimeContext#getExecutionConfig in
> >the FLINK RuntimeContext. In the upcoming FLINK-2.0 version, we plan to
> >completely remove the RuntimeContext#getExecutionConfig method. Instead,
> we
> >will introduce alternative getter methods that enable users to access
> >specific information without exposing unnecessary runtime details. These
> >getter methods will include:
> >
> >1. @PublicEvolving  TypeSerializer
> >createSerializer(TypeInformation typeInformation);
> >2. @PublicEvolving Map getGlobalJobParameters();
> >3. @PublicEvolving boolean isObjectReuseEnabled();
> >
> >Looking forward to your feedback and suggestions, thanks.
> >
> >[1]
> >
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=278465937
> >
> >Best regards,
> >Junrui
>


Re: [DISCUSS] FLIP-391: Deprecate RuntimeContext#getExecutionConfig

2023-11-15 Thread Rui Fan
Sorry, I read something wrong when I read FLIP.

It's fine for me.

Best,
Rui

On Thu, Nov 16, 2023 at 2:32 PM Junrui Lee  wrote:

> Hi Rui,
>
> Thank you for your feedback. Regarding your question, I want to let you
> know that we have included the alternative getter method "@PublicEvolving
> Map getGlobalJobParameters()" in this FLIP. And this method
> will provide users with global job parameters.
> I would appreciate it if you could share your thoughts on whether this
> addition adequately resolves your concerns.
>
> Best,
> Junrui
>
> Rui Fan <1996fan...@gmail.com> 于2023年11月16日周四 13:15写道:
>
>> Thanks Junrui for driving this proposal!
>>
>> Overall looks good to me! I have a question:
>> How do the flink users to getGlobalJobParameters if
>> RuntimeContext#getExecutionConfig is removed?
>> Is there any alternative api? Or is this feature removed?
>>
>> Maybe this is a noob question and I may have missed
>> some information.
>>
>> Best,
>> Rui
>>
>> On Thu, Nov 16, 2023 at 11:05 AM Zhu Zhu  wrote:
>>
>>> Thanks Junrui for creating the FLIP and kicking off this discussion.
>>>
>>> Exposing a mutable ExecutionConfig which is even shared by multiple
>>> operators is truly a defect which can result in weird results.
>>>
>>> +1
>>>
>>> Thanks,
>>> Zhu
>>>
>>> Junrui Lee  于2023年11月15日周三 16:53写道:
>>>
 Hi all,

 I'd like to start a discussion of FLIP-391: Deprecate
 RuntimeContext#getExecutionConfig[1].

 Currently, the FLINK RuntimeContext is important for connecting user
 functions to the underlying runtime details. It provides users with
 necessary runtime information during job execution.
 However, he current implementation of the FLINK RuntimeContext exposes
 the
 ExecutionConfig to users, resulting in two issues:
 Firstly, the ExecutionConfig contains much unrelated information that
 can
 confuse users and complicate management.
 Secondly, exposing the ExecutionConfig allows users to modify it during
 job
 execution, which can cause inconsistencies and problems, especially with
 operator chaining.

 Therefore, we propose deprecating the RuntimeContext#getExecutionConfig
 in
 the FLINK RuntimeContext. In the upcoming FLINK-2.0 version, we plan to
 completely remove the RuntimeContext#getExecutionConfig method.
 Instead, we
 will introduce alternative getter methods that enable users to access
 specific information without exposing unnecessary runtime details. These
 getter methods will include:

 1. @PublicEvolving  TypeSerializer
 createSerializer(TypeInformation typeInformation);
 2. @PublicEvolving Map getGlobalJobParameters();
 3. @PublicEvolving boolean isObjectReuseEnabled();

 Looking forward to your feedback and suggestions, thanks.

 [1]

 https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=278465937

 Best regards,
 Junrui

>>>


Re: [DISCUSS] FLIP-391: Deprecate RuntimeContext#getExecutionConfig

2023-11-15 Thread Junrui Lee
Hi Rui,

Thank you for your feedback. Regarding your question, I want to let you
know that we have included the alternative getter method "@PublicEvolving
Map getGlobalJobParameters()" in this FLIP. And this method
will provide users with global job parameters.
I would appreciate it if you could share your thoughts on whether this
addition adequately resolves your concerns.

Best,
Junrui

Rui Fan <1996fan...@gmail.com> 于2023年11月16日周四 13:15写道:

> Thanks Junrui for driving this proposal!
>
> Overall looks good to me! I have a question:
> How do the flink users to getGlobalJobParameters if
> RuntimeContext#getExecutionConfig is removed?
> Is there any alternative api? Or is this feature removed?
>
> Maybe this is a noob question and I may have missed
> some information.
>
> Best,
> Rui
>
> On Thu, Nov 16, 2023 at 11:05 AM Zhu Zhu  wrote:
>
>> Thanks Junrui for creating the FLIP and kicking off this discussion.
>>
>> Exposing a mutable ExecutionConfig which is even shared by multiple
>> operators is truly a defect which can result in weird results.
>>
>> +1
>>
>> Thanks,
>> Zhu
>>
>> Junrui Lee  于2023年11月15日周三 16:53写道:
>>
>>> Hi all,
>>>
>>> I'd like to start a discussion of FLIP-391: Deprecate
>>> RuntimeContext#getExecutionConfig[1].
>>>
>>> Currently, the FLINK RuntimeContext is important for connecting user
>>> functions to the underlying runtime details. It provides users with
>>> necessary runtime information during job execution.
>>> However, he current implementation of the FLINK RuntimeContext exposes
>>> the
>>> ExecutionConfig to users, resulting in two issues:
>>> Firstly, the ExecutionConfig contains much unrelated information that can
>>> confuse users and complicate management.
>>> Secondly, exposing the ExecutionConfig allows users to modify it during
>>> job
>>> execution, which can cause inconsistencies and problems, especially with
>>> operator chaining.
>>>
>>> Therefore, we propose deprecating the RuntimeContext#getExecutionConfig
>>> in
>>> the FLINK RuntimeContext. In the upcoming FLINK-2.0 version, we plan to
>>> completely remove the RuntimeContext#getExecutionConfig method. Instead,
>>> we
>>> will introduce alternative getter methods that enable users to access
>>> specific information without exposing unnecessary runtime details. These
>>> getter methods will include:
>>>
>>> 1. @PublicEvolving  TypeSerializer
>>> createSerializer(TypeInformation typeInformation);
>>> 2. @PublicEvolving Map getGlobalJobParameters();
>>> 3. @PublicEvolving boolean isObjectReuseEnabled();
>>>
>>> Looking forward to your feedback and suggestions, thanks.
>>>
>>> [1]
>>>
>>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=278465937
>>>
>>> Best regards,
>>> Junrui
>>>
>>


Re: [DISCUSS] FLIP-391: Deprecate RuntimeContext#getExecutionConfig

2023-11-15 Thread Rui Fan
Thanks Junrui for driving this proposal!

Overall looks good to me! I have a question:
How do the flink users to getGlobalJobParameters if
RuntimeContext#getExecutionConfig is removed?
Is there any alternative api? Or is this feature removed?

Maybe this is a noob question and I may have missed
some information.

Best,
Rui

On Thu, Nov 16, 2023 at 11:05 AM Zhu Zhu  wrote:

> Thanks Junrui for creating the FLIP and kicking off this discussion.
>
> Exposing a mutable ExecutionConfig which is even shared by multiple
> operators is truly a defect which can result in weird results.
>
> +1
>
> Thanks,
> Zhu
>
> Junrui Lee  于2023年11月15日周三 16:53写道:
>
>> Hi all,
>>
>> I'd like to start a discussion of FLIP-391: Deprecate
>> RuntimeContext#getExecutionConfig[1].
>>
>> Currently, the FLINK RuntimeContext is important for connecting user
>> functions to the underlying runtime details. It provides users with
>> necessary runtime information during job execution.
>> However, he current implementation of the FLINK RuntimeContext exposes the
>> ExecutionConfig to users, resulting in two issues:
>> Firstly, the ExecutionConfig contains much unrelated information that can
>> confuse users and complicate management.
>> Secondly, exposing the ExecutionConfig allows users to modify it during
>> job
>> execution, which can cause inconsistencies and problems, especially with
>> operator chaining.
>>
>> Therefore, we propose deprecating the RuntimeContext#getExecutionConfig in
>> the FLINK RuntimeContext. In the upcoming FLINK-2.0 version, we plan to
>> completely remove the RuntimeContext#getExecutionConfig method. Instead,
>> we
>> will introduce alternative getter methods that enable users to access
>> specific information without exposing unnecessary runtime details. These
>> getter methods will include:
>>
>> 1. @PublicEvolving  TypeSerializer
>> createSerializer(TypeInformation typeInformation);
>> 2. @PublicEvolving Map getGlobalJobParameters();
>> 3. @PublicEvolving boolean isObjectReuseEnabled();
>>
>> Looking forward to your feedback and suggestions, thanks.
>>
>> [1]
>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=278465937
>>
>> Best regards,
>> Junrui
>>
>


Re: [DISCUSS] FLIP-391: Deprecate RuntimeContext#getExecutionConfig

2023-11-15 Thread Zhu Zhu
Thanks Junrui for creating the FLIP and kicking off this discussion.

Exposing a mutable ExecutionConfig which is even shared by multiple
operators is truly a defect which can result in weird results.

+1

Thanks,
Zhu

Junrui Lee  于2023年11月15日周三 16:53写道:

> Hi all,
>
> I'd like to start a discussion of FLIP-391: Deprecate
> RuntimeContext#getExecutionConfig[1].
>
> Currently, the FLINK RuntimeContext is important for connecting user
> functions to the underlying runtime details. It provides users with
> necessary runtime information during job execution.
> However, he current implementation of the FLINK RuntimeContext exposes the
> ExecutionConfig to users, resulting in two issues:
> Firstly, the ExecutionConfig contains much unrelated information that can
> confuse users and complicate management.
> Secondly, exposing the ExecutionConfig allows users to modify it during job
> execution, which can cause inconsistencies and problems, especially with
> operator chaining.
>
> Therefore, we propose deprecating the RuntimeContext#getExecutionConfig in
> the FLINK RuntimeContext. In the upcoming FLINK-2.0 version, we plan to
> completely remove the RuntimeContext#getExecutionConfig method. Instead, we
> will introduce alternative getter methods that enable users to access
> specific information without exposing unnecessary runtime details. These
> getter methods will include:
>
> 1. @PublicEvolving  TypeSerializer
> createSerializer(TypeInformation typeInformation);
> 2. @PublicEvolving Map getGlobalJobParameters();
> 3. @PublicEvolving boolean isObjectReuseEnabled();
>
> Looking forward to your feedback and suggestions, thanks.
>
> [1]
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=278465937
>
> Best regards,
> Junrui
>


[DISCUSS] FLIP-391: Deprecate RuntimeContext#getExecutionConfig

2023-11-15 Thread Junrui Lee
Hi all,

I'd like to start a discussion of FLIP-391: Deprecate
RuntimeContext#getExecutionConfig[1].

Currently, the FLINK RuntimeContext is important for connecting user
functions to the underlying runtime details. It provides users with
necessary runtime information during job execution.
However, he current implementation of the FLINK RuntimeContext exposes the
ExecutionConfig to users, resulting in two issues:
Firstly, the ExecutionConfig contains much unrelated information that can
confuse users and complicate management.
Secondly, exposing the ExecutionConfig allows users to modify it during job
execution, which can cause inconsistencies and problems, especially with
operator chaining.

Therefore, we propose deprecating the RuntimeContext#getExecutionConfig in
the FLINK RuntimeContext. In the upcoming FLINK-2.0 version, we plan to
completely remove the RuntimeContext#getExecutionConfig method. Instead, we
will introduce alternative getter methods that enable users to access
specific information without exposing unnecessary runtime details. These
getter methods will include:

1. @PublicEvolving  TypeSerializer
createSerializer(TypeInformation typeInformation);
2. @PublicEvolving Map getGlobalJobParameters();
3. @PublicEvolving boolean isObjectReuseEnabled();

Looking forward to your feedback and suggestions, thanks.

[1]
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=278465937

Best regards,
Junrui