Hi Till,
Thanks for your answer! You also answered the next question that I was
about to ask "Can we share state between a Trigger and a Window?" Currently
the only (convoluted) way to share state between two operators is through
the broadcast state pattern, right?
Also, in your example, why can't we use a ValueStateDescriptor<Boolean> in
the Trigger? I tried using it in my own example but it  I am not able to
call the mergePartitionedState() method on a ValueStateDescriptor.

Regards,
Manas



On Tue, Feb 18, 2020 at 7:20 PM Till Rohrmann <trohrm...@apache.org> wrote:

> Hi Manas,
>
> you can implement something like this with a bit of trigger magic. What
> you need to do is to define your own trigger implementation which keeps
> state to remember whether it has triggered the "started window" message or
> not. In the stateful window function you would need to do something
> similar. The first call could trigger the output of "window started" and
> any subsequent call will trigger the evaluation of the window. It would
> have been a bit easier if the trigger and the window process function could
> share its internal state. Unfortunately, this is not possible at the moment.
>
> I've drafted a potential solution which you can find here [1].
>
> [1] https://gist.github.com/tillrohrmann/5251f6d62e256b60947eea7b553519ef
>
> Cheers,
> Till
>
> On Mon, Feb 17, 2020 at 8:09 AM Manas Kale <manaskal...@gmail.com> wrote:
>
>> Hi,
>> I want to achieve the following using event time session windows:
>>
>>    1. When the window.getStart() and last event timestamp in the window
>>    is greater than MIN_WINDOW_SIZE milliseconds, I want to emit a message
>>    "Window started @ timestamp".
>>    2. When the session window ends, i.e. the watermark passes
>>    lasteventTimestamp + inactivityPeriod, I want to emit a message "Window
>>    ended @ timestamp".
>>
>>  It is guaranteed that all events are on time and no lateness is allowed.
>> I am having difficulty implementing both 1 and 2 simultaneously.
>> I am able to implement point 1 using a custom trigger, which checks if
>> (lastEventTimestamp - window.getStart()) > MIN_WINDOW_SIZE and triggers a
>> customProcessWindowFunction().
>> However, with this architecture I can't detect the end of the window.
>>
>> Is my approach correct or is there a completely different method to
>> achieve this?
>>
>> Thanks,
>> Manas Kale
>>
>>
>>
>>

Reply via email to