[ 
https://issues.apache.org/jira/browse/BEAM-3332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16333741#comment-16333741
 ] 

Kenneth Knowles commented on BEAM-3332:
---------------------------------------

I think for event time timers the clock has to be strictly greater than the 
timer to fire also. We should make them consistent and document it very 
thoroughly. But, indeed, we should either change how timers are fired in your 
runner, or change {{shouldFire}} or change the target time set by the state 
machine.

> AfterProcessingTimer trigger not firing if invoked exactly on time
> ------------------------------------------------------------------
>
>                 Key: BEAM-3332
>                 URL: https://issues.apache.org/jira/browse/BEAM-3332
>             Project: Beam
>          Issue Type: Bug
>          Components: runner-core
>    Affects Versions: 2.0.0, 2.1.0, 2.2.0
>            Reporter: Shen Li
>            Assignee: Kenneth Knowles
>            Priority: Trivial
>             Fix For: 2.3.0
>
>
> I occasionally run into an issue that the processing time trigger is invoked 
> on time, but the TriggerStateMachienRunner#shouldFire() returns false. After 
> comparing time instances, I found that this issue occurs when the trigger is 
> invoked exactly on time. It is because the 
> AfterDelayFromFirstElementStateMachine does the following:
> {quote}    return delayedUntil != null
>         && getCurrentTime(context) != null
>         && getCurrentTime(context).isAfter(delayedUntil);{quote}
> which only returns true when the current processing time is AFTER (exclude 
> equals) delayUntil. Should it actually be 
> !getCurrentTime(context).isBefore(delayedUntil) ?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to