Hi Gyula,

thank a lot. I still don't understand why setup() and open() can not be
unified? I also don't know, what the difference between RuntimeContext
and StreamTaskContext is (or to be more precise, why not using a single
context class that unifies both)?

About the renaming of Timestamp class: Marton told me, that he thinks
the name is fine and should not be changed. Before opening a JIRA for
it, you two should get in sync and decide what to do.


-Matthias



On 03/24/2015 05:38 PM, Gyula Fóra wrote:
> Hey Matthias,
> 
> Let's see if I get these things for you :)
> 
> 1) The difference between setup and open is that, setup to set things like
> collectors, runtimecontext and everything that will be used by the
> implemented invokable, and also by the rich functions. Open is called after
> setup, to actually open the execution of the UDF operator.
> 
> 2) Close is always called, even when the task is cancelled. In addition
> when a task is failing (maybe because other tasks are failing) the cancel
> method is called and the main thread is interrupted. The point of having a
> cancel method that some invokables might require different shutdown logic
> in case of failure.
> 
> 3) This I need to look into...
> 
> 4) You are right about the unintuitive name here, if you could open a JIRA
> for this I would appreciate that :)
> 
> 5) You are absolutely right on this point, we need to spend more effort on
> writing proper docs.
> 
> I hope I could clarify some stuff.
> 
> Cheers,
> Gyula
> 
> On Tue, Mar 24, 2015 at 5:05 PM, Matthias J. Sax <
> mj...@informatik.hu-berlin.de> wrote:
> 
>> Hi,
>>
>> as I get more familiar with Flink streaming and do some coding, I hit a
>> few points which I want do discuss about because I find them
>> contra-intuitive. Please tell me, what you think about it or clarify
>> what I misunderstood.
>>
>> 1) In class StreamInvokable has two methods .setup(...) and .open(...)
>>    -> what is the difference between both? When is each of both called
>> exactly? It seems to be, that both are used to setup an operator. Why
>> can't they be unified?
>>
>> 2) The same question about .close() and .cancel() ?
>>
>> 3) There is an class/interface hierarchy for user defined functions. The
>> top level interface is 'Function' and there is an interface
>> 'RichFunction' and abstract class 'AbstractRichFunction'. For each
>> different type, there are user functions derived from. So far so good.
>>         However, the StreamInvokable class only takes a constructor
>> argument
>> Function, indicating that RichFunctions are not supported. Internally,
>> the given function is tested to be a RichFunction (using instanceof) at
>> certain places. This in contra-intuitive from a API point of view.
>>         From my OO understanding it would be better to replace Function by
>> RichFunction everywhere. However, I was told that the (empty) Function
>> interface is necessary for lambda expressions. Thus, I would suggest to
>> extend the API with methods taking a RichFunction a parameter so it is
>> clear that those are supported, too.
>>
>> 4) There is the interface Timestamp that is used to extract a time stamp
>> for a record on order to create windows on a record attribute. I think
>> the name "Timestamp" is miss leading, because the class does not
>> represent a time stamp. I would rather call the interface
>> "TimestampExtractor" or something similar.
>>
>> 5) Stefan started the discussion about more tests for the streaming
>> component. I would additionally suggest to improve the Javadoc
>> documentation. The are many classes an method with missing or very brief
>> documentation and it is ofter hard to guess what they are used for. I
>> would also suggest to describe the interaction of components/classes and
>> WHY some thing are implemented in a certain way. As I have background
>> knowledge from Stratosphere, I personally can work around it and make
>> sense out of it (at least most times). However, for new contributers it
>> might be very hard to make sense out of it and to get started
>> implementing new features.
>>
>>
>> Cheers,
>>   Matthias
>>
>>
>>
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to