I have a FilterFunction implementation which accepts an argument in its
constructor which it stores as an instance member. For example:
class ThresholdFilter implements FilterFunction {
private final MyThreshold threshold;
private int numElementsSeen;
public ThresholdFilter(MyThreshold threshold) {
this.threshold = threshold;
}
<more code>
}
The filter uses the threshold in deciding whether or not to filter the
incoming element.
All this works but I have some gaps in my understanding.
1. How is this filter stored and recovered in the case of a failure. Is
it just serialized to a POJO and stored in the configured state backend?
2. When recovered will it maintain the state of all members (e.g. note
that I have a numElementsSeen member in the filter which will keep
incrementi for each element recevied).
3. Is this sort of thing even advisable for a filter? I'm guessing
Filters are meant to be reusable across operator instances. In which case
the state could be wrong after recovery?
Thanks in advance
Tim