I think one "edge" case which is not handled would be that the first event
(by event-time) arrives late, then a wrong "started-window" would be
reported.

Rafi


On Thu, Feb 20, 2020 at 12:36 PM Manas Kale <manaskal...@gmail.com> wrote:

> Is the reason ValueState cannot be use because session windows are always
> formed by merging proto-windows of single elements, therefore a state store
> is needed that can handle merging. ValueState does not provide this
> functionality, but a ReducingState does?
>
> On Thu, Feb 20, 2020 at 4:01 PM Manas Kale <manaskal...@gmail.com> wrote:
>
>> 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