Hi Shen, There are four points (at least) to why we don't currently have custom triggers:
1. The existing trigger state machine implementations use low-level and difficult APIs that are not available to users. 2. If we make triggers a UDF then we need to cross the Fn API. It makes a lot more portability work in terms of engineering and also is really the center of a tight loop. Instead, runners can very efficiently execute them directly. 3. There are many state machines that are not valid triggers. 4. Some triggers can be more efficiently executed directly from their syntax than from a state machine. Eventually, we may add some kind of triggering UDF. But we may not, because if you want something like a custom trigger for some use case, then you can do it with state & timers in ParDo. But it sounds like you need it for some quite specific testing. Since "watermark advance event" is a runner-specific concept not part of the model (a runner doesn't have to actually reify such events) maybe you just want to test your runner details directly. Kenn On Wed, Jun 7, 2017 at 10:22 AM, Shen Li <cs.she...@gmail.com> wrote: > Hi Lukasz, > > Thanks again for the suggestion. Is there any reason for not allowing users > create custom triggers? > > Shen > > On Wed, Jun 7, 2017 at 12:13 PM, Lukasz Cwik <lc...@google.com.invalid> > wrote: > > > You should really take a look at TestStream and have runners integrate > with > > it instead. > > > > There are already several tests which validate TestStream compatible > > runners to make sure their trigger evaluations are correct. > > > > On Wed, Jun 7, 2017 at 10:10 AM, Shen Li <cs.she...@gmail.com> wrote: > > > > > Hi Lukasz, > > > > > > Thanks for the suggestion. I am trying to test how the runner generates > > > watermarks. So I would like to have the trigger to fire on every > > watermark > > > advancing event. > > > > > > Shen > > > > > > On Wed, Jun 7, 2017 at 10:49 AM, Lukasz Cwik <lc...@google.com.invalid > > > > > wrote: > > > > > > > Look into the AfterPane#elementCountAtLeast trigger as it seems to be > > the > > > > closest to your description. It fires as soon as any data is > available. > > > > > > > > Are you sure you don't want some kind of watermark based trigger with > > > just > > > > with a small interval size? > > > > > > > > > > > > > > > > > > > > On Wed, Jun 7, 2017 at 8:22 AM, Shen Li <cs.she...@gmail.com> wrote: > > > > > > > > > Hi Lukasz, > > > > > > > > > > Thanks for your response. Is it possible to implement the following > > > logic > > > > > using existing triggers: always fire the trigger on a GlobalWindow > > > > whenever > > > > > watermark advances? > > > > > > > > > > Shen > > > > > > > > > > On Wed, Jun 7, 2017 at 10:05 AM, Lukasz Cwik > > <lc...@google.com.invalid > > > > > > > > > wrote: > > > > > > > > > > > Users are unable to create custom trigger implementations. If you > > > tell > > > > us > > > > > > what you want your trigger to do, we may be able to suggest an > > > > > alternative. > > > > > > > > > > > > On Wed, Jun 7, 2017 at 7:41 AM, Shen Li <cs.she...@gmail.com> > > wrote: > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > I created a custom trigger class (XYZ) by extending the > > > OnceTrigger. > > > > > > During > > > > > > > execution, I got this error "Cannot translate trigger class XYZ > > to > > > a > > > > > > > runner-API proto." It seems that the Triggers.ProtoConverter > > class > > > > > needs > > > > > > to > > > > > > > declare a convertSpecific method for my trigger XYZ. How can I > > use > > > my > > > > > > > custom trigger without modifying Beam's Triggers class? > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > Shen > > > > > > > > > > > > > > > > > > > > > > > > > > > >