apex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ananth G <ananthg.a...@gmail.com>
Subject Re: Difference between setup() and activate()
Date Wed, 02 Aug 2017 20:31:33 GMT
Hello Vlad,

Thanks for your response. 

>>Do you refer to restoring from a checkpoint as serialize/deserialize cycles?
Yes. 

>>In case of restoring from a checkpoint (deserialization) setup() is a part of a redeployment
request, AFAIK. 
This sounds a bit in contradiction to the response from Sanjay in the mail thread below. I
tried to quickly glance in the apex-core code and it looks like both are being called ( Perhaps
I am entirely wrong on this as it was only a quick scan). I was referring to the code in StreamingContainer.java
in the engine package and the method called deploy().  


>>Please see ActivationListener javadoc for details when it is necessary to use activate()
vs setup().
I had to raise this question in the mail after going through the javadoc. The javadoc is a
bit cryptic in this scenario of serialise/deserialize. Also the javadoc is not clear as to
what we meant by activate/deactivate being called multiple times whereas setup is called once
in a lifetime of the operator. If the setup is called once in lifetime of an operator per
javadoc, did it mean once in the lifetime of the JVM instantiating via the constructor or
across the deserialise cycles of the passivated operator state ? If it is once across all
passivated instances of the operator, then setup() would not be called multiple times and
hence not a great location for transient variables ? If setup() is called across deserialise
cycles, then I find it more confusing as to why we need setup() and activate() methods almost
having the same functionality. 

Thoughts ?  


Regards,
Ananth 


> On 1 Aug 2017, at 3:38 am, Vlad Rozov <v.rozov@datatorrent.com> wrote:
> 
> Do you refer to restoring from a checkpoint as serialize/deserialize cycles? There are
no calls to setup/teardown and/or activate/deactivate during checkpointing/serialization.
In case of restoring from a checkpoint (deserialization) setup() is a part of a redeployment
request, AFAIK. The best answer to question 3 is it depends. In most cases using setup() to
resolve all transient field is as good as doing that in activate(). Please see ActivationListener
javadoc for details when it is necessary to use activate() vs setup().
> 
> Thank you,
> 
> Vlad
> 
> On 7/29/17 19:58, Sanjay Pujare wrote:
>> The Javadoc comment
>> for com.datatorrent.api.Operator.ActivationListener<CONTEXT>  (in
>> https://github.com/apache/apex-core/blob/master/api/src/main/java/com/datatorrent/api/Operator.java)
>> should hopefully answer your questions.
>> 
>> Specifically:
>> 
>> 1. No, setup() is called only once in the entire lifetime (
>> http://apex.apache.org/docs/apex/operator_development/#setup-call)
>> 
>> 2. Yes. When an operator is "activated" - first time in its life or
>> reactivation after a failover -  actuvate() is called before the first
>> beginWindow() is called.
>> 
>> 3. Yes.
>> 
>> 
>> On Sun, Jul 30, 2017 at 12:18 AM, Ananth G <ananthg.apex@gmail.com> wrote:
>> 
>>> Hello All,
>>> 
>>> I was looking at the documentation and could not get a clear distinction
>>> of behaviours for setup() and activate() during scenarios when an operator
>>> is passivated ( ex: application shutdown, repartition use cases ) and being
>>> brought back to life again. Could someone from the community advise me on
>>> the following questions ?
>>> 
>>> 1. Is setup() called in these scenarios (serialize/deserialize cycles) as
>>> well ?
>>> 
>>> 2. I am assuming activate() is called in these scenarios ? - The javadoc
>>> for activation states that the activate() can be called multiple times (
>>> without explicitly stating why ) and my assumption is that it is because of
>>> these scenarios.
>>> 
>>> 3. If setup() is only called once during the lifetime of an operator , is
>>> it fair to assume that activate() is the best place to resolve all of the
>>> transient fields of an operator ?
>>> 
>>> 
>>> Regards,
>>> Ananth
> 


Mime
View raw message