What should I take care if I enable object reuse

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

What should I take care if I enable object reuse

yinhua.dai
Hi Community,

I saw from the document that we need to be careful about enable the object
reuse feature.
So which part should I check to avoid any issues? Can any one help to
summarize?
Thank you.

//////
*enableObjectReuse() / disableObjectReuse()* By default, objects are not
reused in Flink. Enabling the object reuse mode will instruct the runtime to
reuse user objects for better performance. Keep in mind that this can lead
to bugs when the user-code function of an operation is not aware of this
behavior.



--
Sent from: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: What should I take care if I enable object reuse

Elias Levy
Avoid mutating the object if you keep a reference to it within an operator.

On Wed, Mar 13, 2019 at 11:51 PM yinhua.dai <[hidden email]> wrote:
Hi Community,

I saw from the document that we need to be careful about enable the object
reuse feature.
So which part should I check to avoid any issues? Can any one help to
summarize?
Thank you.

//////
*enableObjectReuse() / disableObjectReuse()* By default, objects are not
reused in Flink. Enabling the object reuse mode will instruct the runtime to
reuse user objects for better performance. Keep in mind that this can lead
to bugs when the user-code function of an operation is not aware of this
behavior.



--
Sent from: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: What should I take care if I enable object reuse

yinhua.dai
Hi Elias,

Thanks.
Would it be good enough as long as we use always use different object when
call the Collector.collect() method in the operator?



--
Sent from: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: What should I take care if I enable object reuse

Kurt Young
Keep one thing in mind: if you want the element remains legal after the function call ends (maybe map(), flatmap(), depends on what you are using), you should copy the elements. 
Typical scenarios includes:
1. Save the elements into some collection like array, list, map for later usage, you should copy it explicitly.
2. Pass the element into some async calls, you should copy it. 

Best,
Kurt


On Fri, Mar 15, 2019 at 8:45 AM yinhua.dai <[hidden email]> wrote:
Hi Elias,

Thanks.
Would it be good enough as long as we use always use different object when
call the Collector.collect() method in the operator?



--
Sent from: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: What should I take care if I enable object reuse

Elias Levy
That's certainly the safe thing to do, but if you do not mutate the object, a copy is not strictly necessary.



On Thu, Mar 14, 2019 at 9:19 PM Kurt Young <[hidden email]> wrote:
Keep one thing in mind: if you want the element remains legal after the function call ends (maybe map(), flatmap(), depends on what you are using), you should copy the elements. 
Typical scenarios includes:
1. Save the elements into some collection like array, list, map for later usage, you should copy it explicitly.
2. Pass the element into some async calls, you should copy it. 

Best,
Kurt


On Fri, Mar 15, 2019 at 8:45 AM yinhua.dai <[hidden email]> wrote:
Hi Elias,

Thanks.
Would it be good enough as long as we use always use different object when
call the Collector.collect() method in the operator?



--
Sent from: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: What should I take care if I enable object reuse

yinhua.dai