Hi Jayant, The difference is that the Watermarks from BoundedOutOfOrdernessTimestampExtractor are based on the greatest timestamp of all previous events. That is, if you do not receive new events, the Watermark will not advance. In contrast, your custom implementation of AssignerWithPeriodicWatermarks always advances the Watermark based on the wall clock.
Maybe this will already help you to debug your application. If not, it would be great to see a minimal working example. Best, Gary On Wed, Jan 10, 2018 at 4:46 PM, Jayant Ameta <wittyam...@gmail.com> wrote: > Hi, > When using a BoundedOutOfOrdernessTimestampExtractor, the trigger is not > firing. However, the trigger fires when using custom timestamp extractor > with similar watermark. > > Sample code below: > 1.Assigner as anonymous class which works fine > > AssignerWithPeriodicWatermarks<Tuple2<Rule, T>> assigner = new > AssignerWithPeriodicWatermarks<Tuple2<Rule, T>>() { > > @Override > public long extractTimestamp(Tuple2<Rule, T> element, long > previousElementTimestamp) { > return System.currentTimeMillis(); > } > > @Override > public final Watermark getCurrentWatermark() { > // this guarantees that the watermark never goes backwards. > return new Watermark(System.currentTimeMillis()-100); > } > }; > > > 2.BoundedOutOfOrdernessTimestampExtractor assigner which doesn't work > > AssignerWithPeriodicWatermarks<Tuple2<Rule, T>> assigner = new > BoundedOutOfOrdernessTimestampExtractor<Tuple2<Rule, > T>>(Time.milliseconds(100)) { > > @Override > public long extractTimestamp(Tuple2<Rule, T> element) { > return System.currentTimeMillis(); > } > }; > > > Do you see any difference in the approaches? > > - Jayant >