Nikolay, > 2. What behavior is expected if transformer throws exception for some event? I see following options:
Client should be notified, I vote for > Introduce special callback. onTransformError? On Tue, Aug 29, 2017 at 1:36 PM, Nikolay Izhikov <[email protected]> wrote: > Hello, Igniters. > > I'm working on IGNITE-425 [1] issue. > > Text of issue: > > === > Currently if updated entry passes the filter, it is sent to node initiated > the query entirely. It would be good to provide user with the ability to > transform entry and, for example, select only fields that are important. > This may bring huge economy to traffic and lower GC pressure as well. > === > > My pull request [2] is ready. > Anton Vinogradov is OK with it. > Nikolay Tikhonov reviewed my changes and want to discuss changes related > to public API with community. > > 1. I introduce new query class - ContinuousQueryWithTransformer [3]. > Reasons: > * ContinuousQuery is final so user can't extends it. I don't want to > change that. > * ContinuousQuery contains some deprecated methods(setRemoteFilter) so > with new class we can get rid of them. > * Such public API design disallow usage of existing localEventListener > with new transformedEventListenr in compile time. > > Thoughts? > > 2. What behavior is expected if transformer throws exception for some > event? I see following options: > > * Pass `null` to listener(pull request implementation). > * Skip event. Don't call listener. > * Introduce special callback. onTransformError? > > Thoughts? > > ``` > public final class ContinuousQueryWithTransformer<K, V, T> extends > Query<Cache.Entry<K, V>> { > //... > > private Factory<? extends CacheEntryEventFilter<K, V>> > rmtFilterFactory; > > private Factory<? extends IgniteClosure<CacheEntryEvent<? extends K, > ? extends V>, T>> rmtTransFactory; > > private EventListener<T> locLsnr; > > //... > > public interface EventListener<T> { > void onUpdated(Iterable<? extends T> events); > } > } > ``` > > Previous discussion - [4] > > [1] https://issues.apache.org/jira/browse/IGNITE-425 > [2] https://github.com/apache/ignite/pull/2372 > [3] https://github.com/apache/ignite/pull/2372/files#diff-22cc0c > f0bc428b32a39e6cc0b22b0e3e > [4] http://apache-ignite-developers.2346864.n4.nabble.com/Contin > uousQueryWithTransformer-implementation-questions-td20078.html >
