RE: API for asynchronous execution.

2016-06-05 Thread Andrey Kornev
ed in-order, despite the asynchronous execution of the callback. Without such guarantee, the applicability of the async callback feature would be very limited. Thanks Andrey > Date: Tue, 29 Mar 2016 19:22:50 +0300 > Subject: Re: API for asynchronous execution. > From: ntikho...@gridgain

Re: API for asynchronous execution.

2016-04-18 Thread Dmitriy Setrakyan
Agree. Let’s use the annotation approach. However, annotation can be easily missed, so we should make sure we document it with examples, and javadoc it with examples. D. On Mon, Apr 18, 2016 at 5:39 AM, Nikolay Tikhonov wrote: > Dima, > We have also JCache API which allow register/deregister co

Re: API for asynchronous execution.

2016-04-18 Thread Nikolay Tikhonov
Dima, We have also JCache API which allow register/deregister continuous query javax.cache.Cache#registerCacheEntryListener(CacheEntryListenerConfiguration) and we can't change it. I think that annotation looks better for consistency both API. On Mon, Apr 18, 2016 at 7:26 AM, Dmitriy Setrakyan wr

Re: API for asynchronous execution.

2016-04-17 Thread Dmitriy Setrakyan
Instead of the Async annotation, why not just have a setter “setAsyncFilter(true)”? D. On Fri, Apr 15, 2016 at 4:33 AM, Nikolay Tikhonov wrote: > Yakov is right. Benchmarks show performance drop 3-8% when using > asynchronous callbacks. > > On Fri, Apr 15, 2016 at 11:34 AM, Yakov Zhdanov > wro

Re: API for asynchronous execution.

2016-04-15 Thread Nikolay Tikhonov
Yakov is right. Benchmarks show performance drop 3-8% when using asynchronous callbacks. On Fri, Apr 15, 2016 at 11:34 AM, Yakov Zhdanov wrote: > I am pretty sure that making all filter notifications asynchronous will > terribly affect performance. I would leave it only for cases when some > com

Re: API for asynchronous execution.

2016-04-15 Thread Yakov Zhdanov
I am pretty sure that making all filter notifications asynchronous will terribly affect performance. I would leave it only for cases when some complex processing needs to be done involving, for example, cache operations. If filter is simple then I would leave it sync (by default). --Yakov 2016-04

Re: API for asynchronous execution.

2016-04-14 Thread Dmitriy Setrakyan
Nick, Can you explain why we would ever want to have a synchronous callback? Aren’t all filter notifications supposed to be asynchronous, especially if there is no performance degradation? D. On Thu, Apr 14, 2016 at 11:17 AM, Nikolay Tikhonov wrote: > The following code snippet show how make a

RE: API for asynchronous execution.

2016-04-14 Thread Denis Magda
, April 14, 2016 21:17 To: dev@ignite.apache.org Subject: Re: API for asynchronous execution. The following code snippet show how make asynchronous filter in continuous query. Difference in configuration between sync and async filters just in annotation on class. IgniteCache cache

Re: API for asynchronous execution.

2016-04-14 Thread Nikolay Tikhonov
The following code snippet show how make asynchronous filter in continuous query. Difference in configuration between sync and async filters just in annotation on class. IgniteCache cache = ...; ContinuousQuery qry = new ContinuousQuery(); qry.setRemoteFilterFactory(FactoryBuiler.factoryOf(Filt

Re: API for asynchronous execution.

2016-04-14 Thread Dmitriy Setrakyan
Do we have a coding example for this functionality somewhere? It would be nice to review the changes from usability standpoint. On Thu, Apr 14, 2016 at 3:58 AM, Nikolay Tikhonov wrote: > We are close to completing IGNITE-2004 ticket. > As part this ticket was made the following changes on public

Re: API for asynchronous execution.

2016-04-14 Thread Nikolay Tikhonov
We are close to completing IGNITE-2004 ticket. As part this ticket was made the following changes on public API - if callback has @IgniteAsyncCallback annotation then callback should be run asynchronously - these callbacks are executed in special pool (callback thread pool) which is configured by I

Re: API for asynchronous execution.

2016-03-30 Thread Yakov Zhdanov
I think this approach works unless user does not initiate number of concurrent cache operations greater than MSG_QUEUE_SIZE. Where msg queue size default is 1024, but still configurable. Thanks! -- Yakov Zhdanov, Director R&D *GridGain Systems* www.gridgain.com 2016-03-30 11:44 GMT+03:00 Vladimi

Re: API for asynchronous execution.

2016-03-30 Thread Vladimir Ozerov
Does it mean that if cache update rate is greater than filter execution rate, then at some point we will stop reading messages from socket? If yes, then it seems we still cannot execute cache operations: 1) Filter starts cache operation for a key. Current node is backup for this key. 2) Cache messa

Re: API for asynchronous execution.

2016-03-30 Thread Yakov Zhdanov
Vladimir, Communication should stop reading from connection is there are too many unprocessed messages. Sender will be blocked on putting message to queue. --Yakov 2016-03-30 11:11 GMT+03:00 Vladimir Ozerov : > Guys, > > Can you explain how backpressure control is implemented? What if event > a

Re: API for asynchronous execution.

2016-03-30 Thread Vladimir Ozerov
Guys, Can you explain how backpressure control is implemented? What if event arrival speed is greater than filter processing speed? On Wed, Mar 30, 2016 at 10:37 AM, Semyon Boikov wrote: > Andrey, > > I agree that current situation with threading in Ignite is very > inconvenient when user callb

Re: API for asynchronous execution.

2016-03-30 Thread Semyon Boikov
Andrey, I agree that current situation with threading in Ignite is very inconvenient when user callbacks execute some non-trivial code. But changing this to async dispatch is huge refactoring, even changing this just for continuous queries callback is not so easy task. We can start with https://i

RE: API for asynchronous execution.

2016-03-29 Thread Andrey Kornev
Vladimir, Igniters Here are my 2 cents. The current situation with threading when it comes to executing user callbacks -- the CQ filters (either local or remote), the CQ listeners, the event listeners, the messaging listeners, the entry processors (did I miss anything?) -- is pretty sad. The

Re: API for asynchronous execution.

2016-03-29 Thread Nikolay Tikhonov
Vova, 1) As far as I remember, we enforce ordering of updates for the same key, > right? If yes, then stalled filter invoke for update #1 will stall all > further updates. > Invocation of filter will be implemented in thread-partition style for supporting ordering of updates. > 2) Listener noti

Re: API for asynchronous execution.

2016-03-29 Thread Vladimir Ozerov
Nick, I hardly can image why user would like to have async entry processor provided that we already have IgniteCache.withAsync(). Moreover, usually this method is invoked while holding lock on entry, so it doesn't seem to be a valid use case (plus remember about unwrap() method). Though, may be I

Re: API for asynchronous execution.

2016-03-29 Thread Nikolay Tikhonov
This approach works for cases when callback will be invoked on local node (cache future, local listener and etc), but how user set a thread pool when callback executed on remote nodes (remote filter, entry processor and etc)? On Tue, Mar 29, 2016 at 2:57 PM, Vladimir Ozerov wrote: > We already h

Re: API for asynchronous execution.

2016-03-29 Thread Vladimir Ozerov
We already had discussion about it several months ago. Normal practice is to allow user specify thread pool where he would like to execute the callback. This is how things work in JDK CompletableFutures and Hazelcast futures, and this is the most flexible approach. On Tue, Mar 29, 2016 at 2:23 PM,

API for asynchronous execution.

2016-03-29 Thread Nikolay Tikhonov
Hello Igniters, Lately I'm working on a ticket https://issues.apache.org/jira/browse/IGNITE-2004. As part of the ticket need to add API which will provide an ability to execute operation asynchronously. The ability might be useful not only for continuous query filter but also for cache and discove