The new API forces iteration through every element of the buffer even if a single value to be evicted. What about implementing Iterator.remove() method for elements? The API would look like:
public interface Evictor<T, W extends Window> extends Serializable { /** * Optionally evicts elements. Called before windowing function. * * @param elements The elements currently in the pane. Use Iterator.remove to evict. * @param size The current number of elements in the pane. * @param window The {@link Window} */ void evictBefore(Iterable<T> elements, int size, EvictorContext ctx); /** * Optionally evicts elements. Called after windowing function. * * @param elements The elements currently in the pane. Use Iterator.remove to evict. * @param size The current number of elements in the pane. * @param window The {@link Window} */ void evictAfter(Iterable<T> elements, int size, EvictorContext ctx); } Such API allows to abort iteration at any point and evict elements in any order. Thanks, Maxim. On Wed, Jul 6, 2016 at 9:04 AM, Vishnu Viswanath < vishnu.viswanat...@gmail.com> wrote: > > Hi Aljoscha, > > Thanks. Yes the new interface seems to address points 1 and 2. of > > *1) I am having a use case where I have to create a custom Evictor that > will evict elements from the window based on the value (e.g., if I have > elements are of case class Item(id: Int, type:String) then evict elements > that has type="a"). I believe this is not currently possible.* > *2) this is somewhat related to 1) where there should be an option to evict > elements from anywhere in the window. not only from the beginning of the > window. (e.g., apply the delta function to all elements and remove all > those don't pass. I checked the code and evict method just returns the > number of elements to be removed and processTriggerResult just skips those > many elements from the beginning. * > *3) Add an option to enables the user to decide if the eviction should > happen before the apply function or after the apply function. Currently it > is before the apply function, but I have a use case where I need to first > apply the function and evict afterward.* > > I would be interested in contributing to the code base. Please let me know > the steps. > > Thanks and Regards, > Vishnu Viswanath > > On Wed, Jul 6, 2016 at 11:49 AM, Aljoscha Krettek <aljos...@apache.org> > wrote: > > > Hi, > > as mentioned in the thread on improving the Windowing API I also have a > > design doc just for improving WindowEvictors. I had this in my head for a > > while but was hesitant to publish but since people are asking about this > > now might be a good time to post it. Here's the doc: > > https://docs.google.com/document/d/1Rr7xzlItYqvFXLyyy-Yv0vvw8f29QYAjm5i9E4A_JlU/edit?usp=sharing > > > > Feedback/Suggestions are very welcome! Please let me know what you think. > > > > @Vishnu: Are you interested in contributing a solution for this to the > > Flink code base? I'd be very happy to work with you on this. > > > > Cheers, > > Aljoscha > > > > P.S. I think it would be best to keep discussions to the ML because > > comments on the doc will not be visible here for everyone. > >