I think AfterWatermark in particular should *alway* produce an ON_TIME
pane, regardless of whether there were early panes. (It's less clear
with non-watermark triggers like after count or processing time.) This
makes it feel like the on time behavior is a property of the trigger,
not the windowing strategy.

On Mon, Jan 13, 2020 at 5:06 PM Aaron Dixon <atdi...@gmail.com> wrote:
>
> Kenn, thank you! There is OnTimeBehavior (default FIRE_ALWAYS) and 
> ClosingBehavior (default FIRE_IF_NON_EMPTY). Given that OnTimeBehavior is 
> always-fire, shouldn't I see empty ON_TIME panes?
>
> Since my lateness config is 0, I'm going to try ClosingBehavior = FIRE_ALWAYS 
> and see if I can rely on .isLast() to pick out the last pane downstream. But 
> curious if given that the OnTimeBehavior default is ALWAYS, shouldn't I be 
> seeing on-time panes in my current config?
>
>
>
> On Mon, Jan 13, 2020 at 6:45 PM Kenneth Knowles <k...@apache.org> wrote:
>>
>> On my phone, so I can't grab the jira so easily, but quickly: EARLY panes 
>> are "race condition equivalent" to ON_TIME panes. The early panes consume 
>> all the pending elements then the on time pane is "empty". This is WAI if it 
>> is what is causing it. You need to explicitly set 
>> Window.configure().fireAlways()*. I know this is counterintuitive in 
>> accumulating mode, where the empty pane is not the identity element.
>>
>> Kenn
>>
>> *I don't recall if this is the default or not, and also because on phone it 
>> is slow to look up. From your experience I think not default.
>>
>> On Mon, Jan 13, 2020, 15:03 Aaron Dixon <atdi...@gmail.com> wrote:
>>>
>>> Any confirmation on this from anyone? Whether per Beam spec, runners are 
>>> obligated to send ON_TIME panes for AfterWatermark triggers? I'm stuck 
>>> because this seems fundamental, so it's hard to imagine this is a Dataflow 
>>> bug, but OTOH it's also hard to imagine that trigger specs like 
>>> AfterWatermark are "optional"... ?
>>>
>>> On Mon, Jan 13, 2020 at 4:18 PM Aaron Dixon <atdi...@gmail.com> wrote:
>>>>
>>>> Yes. Using calendar day-based windows and watermark is completely caught 
>>>> up to today ... calendar window ends several days ago. I got EARLY panes 
>>>> for each element but never ON_TIME pane.
>>>>
>>>> On Mon, Jan 13, 2020 at 4:16 PM Luke Cwik <lc...@google.com> wrote:
>>>>>
>>>>> Is the watermark advancing past the end of the window?
>>>>>
>>>>> On Mon, Jan 13, 2020 at 2:02 PM Aaron Dixon <atdi...@gmail.com> wrote:
>>>>>>
>>>>>> The window is not empty fwiw; it has elements; I get an early firing 
>>>>>> pane for the window but well after the watermark passes there is no 
>>>>>> ON_TIME pane. Would this be a bug in Dataflow? Seems fundamental, so I'm 
>>>>>> concerned perhaps the Beam spec doesn't obligate ON_TIME firings?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Jan 13, 2020 at 3:58 PM Luke Cwik <lc...@google.com> wrote:
>>>>>>>
>>>>>>> I would have expected an empty on time pane since the default on time 
>>>>>>> behavior is FIRE_ALWAYS.
>>>>>>>
>>>>>>> On Mon, Jan 13, 2020 at 1:54 PM Aaron Dixon <atdi...@gmail.com> wrote:
>>>>>>>>
>>>>>>>> Can anyone confirm?
>>>>>>>>
>>>>>>>> This is intermittent. Some (it seems, sparse) windows don't get an 
>>>>>>>> ON_TIME firing after watermark. Is this a bug or is there a reason to 
>>>>>>>> not expect ON_TIME firings for every window?
>>>>>>>>
>>>>>>>> On Mon, Jan 13, 2020 at 3:47 PM Rui Wang <ruw...@google.com> wrote:
>>>>>>>>>
>>>>>>>>> If it indeed happened as you have described, I will be very 
>>>>>>>>> interested in the expected behaviour.
>>>>>>>>>
>>>>>>>>> Something I remembered before: the trigger condition meets just gives 
>>>>>>>>> the runner/engine "permission" to fire, but runner/engine may not 
>>>>>>>>> fire immediately. But I don't know if the engine/runner will 
>>>>>>>>> guarantee to fire.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> -Rui
>>>>>>>>>
>>>>>>>>> On Mon, Jan 13, 2020 at 1:43 PM Aaron Dixon <atdi...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>> I have the following trigger:
>>>>>>>>>>
>>>>>>>>>> .apply(Window
>>>>>>>>>>       .configure()
>>>>>>>>>>       .triggering(AfterWatermark
>>>>>>>>>>            .pastEndOfWindow()
>>>>>>>>>>            .withEarlyFirings(AfterPane
>>>>>>>>>>                 .elementCountAtLeast(1)))
>>>>>>>>>>       .accumulatingFiredPanes()
>>>>>>>>>>       .withAllowedLateness(Duration.ZERO)
>>>>>>>>>>
>>>>>>>>>> But in Dataflow I notice that I never get an ON_TIME firing for my 
>>>>>>>>>> window -- I only see early firing for elements, and then nothing.
>>>>>>>>>>
>>>>>>>>>> My assumption is that AfterWatermark should give me a last, on-time 
>>>>>>>>>> pane under this configuration when the watermark surpasses the 
>>>>>>>>>> window's end.
>>>>>>>>>>
>>>>>>>>>> Is my expectation correct?

Reply via email to