@Override protected boolean allowWatermark(Watermark mark) { // allow Long.MAX_VALUE since this is the special end-watermark that for example the Kafka source emits return mark.getTimestamp() == Long.MAX_VALUE && nextWatermarkTime != Long.MAX_VALUE; }
@Override public final Watermark getCurrentWatermark() { // this guarantees that the watermark never goes backwards. long potentialWM = currentMaxTimestamp - maxOutOfOrderness; if (potentialWM >= lastEmittedWatermark) { lastEmittedWatermark = potentialWM; } return new Watermark(lastEmittedWatermark); }
@Override protected void handleWatermark(Watermark mark) { if (mark.equals(Watermark.MAX_WATERMARK)) { output.emitWatermark(mark); lastWatermark = Long.MAX_VALUE; } } }
@Override public Watermark checkAndGetNextWatermark(Integer lastElement, long extractedTimestamp) { return new Watermark(counter - 1); } }
@Override public void processWatermark(Watermark mark) throws Exception { super.processWatermark(mark); this.currentWatermark = mark.getTimestamp(); }
@Override public final Watermark getCurrentWatermark() { return new Watermark(currentTimestamp == Long.MIN_VALUE ? Long.MIN_VALUE : currentTimestamp - 1); }
@Override public void processWatermark(Watermark mark) throws Exception { super.processWatermark(mark); currentWatermark = mark.getTimestamp(); }
@Nullable @Override public Watermark getCurrentWatermark() { return new Watermark(currentTimestamp == Long.MIN_VALUE ? Long.MIN_VALUE : currentTimestamp - 1); } }
@Override public Watermark checkAndGetNextWatermark(Tuple3<String, String, Integer> lastElement, long extractedTimestamp) { return new Watermark(lastElement.f2 - 1); } }
@Override public Watermark checkAndGetNextWatermark(Integer element, long extractedTimestamp) { return new Watermark(extractedTimestamp - 1); } })
@Override public Watermark getCurrentWatermark() { return new Watermark(currentTimestamp == Long.MIN_VALUE ? Long.MIN_VALUE : currentTimestamp - 1); } }
@Override public Watermark checkAndGetNextWatermark(Tuple2<String, Integer> lastElement, long extractedTimestamp) { return new Watermark(lastElement.f1 - 1); } }
@Override public Watermark checkAndGetNextWatermark(Tuple2<Long, Boolean> lastElement, long extractedTimestamp) { return lastElement.f1 ? new Watermark(extractedTimestamp) : null; } }
@Override public Watermark checkAndGetNextWatermark(Integer element, long extractedTimestamp) { return new Watermark(extractedTimestamp - 1); } })
@Override public Watermark checkAndGetNextWatermark(Tuple2<String, Integer> element, long extractedTimestamp) { return new Watermark(extractedTimestamp - 1); } }
@Nullable @Override public Watermark checkAndGetNextWatermark(Integer lastElement, long extractedTimestamp) { return new Watermark(extractedTimestamp); }
@Nullable @Override public Watermark getCurrentWatermark() { return new Watermark(maxTimestamp); } }
@Nullable @Override public Watermark checkAndGetNextWatermark(T lastElement, long extractedTimestamp) { return new Watermark(extractedTimestamp); } }
@Override public void run(SourceContext<Integer> ctx) throws Exception { for (int i = 0; i < numWatermarks; i++) { ctx.collectWithTimestamp(i, initialTime + i); ctx.emitWatermark(new Watermark(initialTime + i)); } }