Dear Community,

I'm working on adding support for heuristic watermark in Windowed Operator.
Heuristic watermark give users of WindowedOperator a way to logically
determine whether watermark condition is met or not by inspecting the
tuples received.
This can act as a replacement for or way to work along with Control Tuple
received on control port.

Here is the approach I'm considering:

1. A new interface lets say "HeuristicWatermark" will be added which
extends Component<Context.OperatorContext>
The reason why its extended with Component is then it can follow a
lifecycle.

2. This method contains a single method something like this:

ControlTuple.Watermark processTupleForWatermark(Tuple.WindowedTuple<InputT>
input);

3. Object of this type can optionally be set to AbstractWindowedOperator as
a plugin which identified whether watermark condition has reached.

4. If heuristicWatermark is set, processTupleForWatermark will be called
for every received tuple and the method can return the Watermark object if
watermark condition is met OR return null if not so.

5. If return value of this method is non-null, then processWatermark method
will be called which sets the nextWatermark value. And then rest of the
watermark processing can continue to happen in endWindow.


Please share your opinion on above approach.

Thanks,
Chinmay.

Reply via email to