> A couple of additional questions:
> 1. I am assuming that near caches are dropped on reconnect as well, right?
Right, content of near caches is dropped on reconnect.

> 2. Do we have documentation for this feature? If not, can we add this
> documentation to the client section?
Not yet, will try to add documentation today.

> 3. Did this feature in any way affect ability to start many (100+) clients
> in the same JVM?
No, this feature did not add any additional overhead.

On Thu, Jul 16, 2015 at 7:32 PM, Dmitriy Setrakyan <dsetrak...@apache.org>
wrote:

> Great job, Semyon!
>
> This is a very useful feature and is a huge addition to the project, as it
> adds self-healing capabilities to our cluster. I was following this
> development from the sidelines and want to mention that this feature is
> very well tested, with many unit tests added to CI, as well as many manual
> tests that occurred.
>
> A couple of additional questions:
> 1. I am assuming that near caches are dropped on reconnect as well, right?
> 2. Do we have documentation for this feature? If not, can we add this
> documentation to the client section?
> 3. Did this feature in any way affect ability to start many (100+) clients
> in the same JVM?
>
> Thanks,
> D.
>
> On Thu, Jul 16, 2015 at 4:29 AM, Semyon Boikov <sboi...@gridgain.com>
> wrote:
>
> > Hi,
> >
> > I finished work on 'client reconnect' feature (
> > https://issues.apache.org/jira/browse/IGNITE-901), it is merged into
> > master. Here is brief description of this feature:
> >
> > Client node can disconnect from cluster in several cases:
> > - in case of network problems when client can not re-establish connection
> > with server
> > - connection with server was broken for some time, client is able to
> > re-establish connection with server, but server already dropped client
> node
> > since did not receive client heartbeats
> > - slow clients can be dropped by server (see
> > TcpCommunicationSpi.slowClientQueueLimit)
> >
> > Before changes done in ignite-901 in case of disconnection client node
> was
> > just stopped.
> >
> > Now client assigns to a local node new ID and tries to reconnect to
> > cluster. Note: this has side effect and 'id' property of local
> ClusterNode
> > will change in case of client reconnection.
> > While client tries to reconnect to cluster all Ignite API throws special
> > exception: IgniteClientDisconnectedException, this exception provides
> > future which will be completed when client finish reconnect (IgniteCache
> > API throws CacheException which has IgniteClientDisconnectedException as
> > its cause).
> >
> > After client reconnected Ignite API can be used again.
> >
> > Also we added special discovery events
> > (EventType.EVT_CLIENT_NODE_DISCONNECTED,
> > EventType.EVT_CLIENT_NODE_RECONNECTED) and method on IgniteCluster to get
> > client reconnect future.
> >
> > New reconnect behavior can be disabled using 'clientReconnectDisabled'
> > property on TcpDiscoverySpi.
> >
> > And here is an example how work with disconnected exception looks like:
> >
> > *    IgniteCache cache = ignite.getOrCreateCache(new
> > CacheConfiguration<>());*
> >
> > *    while (true) {*
> > *        try {*
> > *            cache.put(key, val);*
> > *        }*
> > *        catch (CacheException e) {*
> > *            if (e.getCause() instanceof
> IgniteClientDisconnectedException)
> > {*
> > *                IgniteClientDisconnectedException cause =
> > (IgniteClientDisconnectedException)e.getCause();*
> >
> > *                cause.reconnectFuture().get();*
> >
> > *                // Client reconnected, can proceed and use the same
> cache
> > instance.*
> > *            }*
> > *        }*
> > *    }*
> >
>

Reply via email to