If you use ignite jdbc driver, to ensure that you always get a valid ignite
instance before call a ignite operation I recommend to use a datasource
implementation that validates connection before calls and create new ones
otherwise.

For common operations with a ignite instance, I use this method to ensure a
*good* ignite instance and don“t waits or control reconnection... maybe
there are some other mechanisms... but who cares? ;)

        public Ignite getIgnite() {
                if (this.ignite!=null){
                        try{
                                //ensure this ignite instance is STARTED and 
connected
                                this.ignite.getOrCreateCache("default");
                        }catch (IllegalStateException e){
                                this.ignite=null;
                        }catch (IgniteClientDisconnectedException cause) {
                                this.ignite=null;
                        }catch (CacheException e) {
                                if (e.getCause() instanceof 
IgniteClientDisconnectedException) {
                                        this.ignite=null;
                                }else if (e.getCause() instanceof
IgniteClientDisconnectedCheckedException) {
                                        this.ignite=null;
                                }else{
                                        throw e;
                                }
                        }
                }
                if (this.ignite==null){
                        this.createIgniteInstance();
                }
                return ignite;
        }

also you can wait for reconnection using this catch block instead of
above... but as I said... who cares?... sometimes reconnection waits are not
desirable...
[...]
               try{
                                //ensure this ignite instance is STARTED and 
connected
                                this.ignite.getOrCreateCache("default");
                }catch (IllegalStateException e){
                                this.ignite=null;
                }catch (IgniteClientDisconnectedException cause) {
                        LOG.warn("Client disconnected from cluster. Waiting for 
reconnect...");
                        cause.reconnectFuture().get(); // Wait for reconnect.
                }catch (CacheException e) {
                        if (e.getCause() instanceof 
IgniteClientDisconnectedException) {
                                LOG.warn("Client disconnected from cluster. 
Waiting for reconnect...");
                                IgniteClientDisconnectedException cause =
(IgniteClientDisconnectedException)e.getCause();
                                cause.reconnectFuture().get(); // Wait for 
reconnect.
                        }else if (e.getCause() instanceof
IgniteClientDisconnectedCheckedException) {
                                LOG.warn("Client disconnected from cluster. 
Waiting for reconnect...");
                                IgniteClientDisconnectedCheckedException cause =
(IgniteClientDisconnectedCheckedException)e.getCause();
                                cause.reconnectFuture().get(); // Wait for 
reconnect.
                        }else{
                                throw e;
                        }
                }
[...]



--
View this message in context: 
http://apache-ignite-users.70518.x6.nabble.com/Ignite-Jdbc-connection-tp8431p8441.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Reply via email to