Github user aljoscha commented on the issue:

    https://github.com/apache/flink/pull/2982
  
    @chenqin 
    
    I rebased and consolidated your PR a bit and played around with the APIs.
    
    Some of the changes:
     - Separation into internal changes/window operator changes and 
user-function changes. I have a prototype commit that exposes side outputs 
using `ProcessFunction`.
     - I removed `CollectorWrapper`/`RichCollector` in favour of the 
`ProcessFunction` approach
     - The internal implementation now doesn't store the `OutputTag` on the 
`StreamRecord` but instead adds an additional method on `Output` that should be 
used for emitting data to a side output. Side outputs now also work with 
chaining.
     - `WindowedStream` is changed to add a `sideOutputLateData()` method that 
is used to specify that late data side output is required. This is more general 
than putting it into the method signature of `apply()` because it will simply 
work for all different window types.
    
    I quickly talked to @StephanEwen and we agreed that we need to further 
think about how we want to expose side outputs for user-defined functions. 
Especially, we have to think about what this addition means for the 
`split()`/`select()` pattern. I will also do another change where 
`sideOutputLateData()` is not required but instead will be added when the 
late-date stream is requested.
    
    What do you think?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to