/** {@inheritDoc} */ @Override public void onTimeout() { if (done.compareAndSet(false, true)) { // Close socket - timeout occurred. if (obj instanceof GridCommunicationClient) ((GridCommunicationClient)obj).forceClose(); else U.closeQuiet((AbstractInterruptibleChannel)obj); } }
/** {@inheritDoc} */ @Override public boolean async() { return delegate.async(); }
/** {@inheritDoc} */ @Override public boolean close() { return delegate.close(); }
log.debug("Forcing close of non-existent node connection: " + nodeId); client.forceClose(); recovery = recoveryDescs.get(new ConnectionKey(node.id(), client.connectionIndex(), -1)); long idleTime = client.getIdleTime(); recovery = outRecDescs.get(new ConnectionKey(node.id(), client.connectionIndex(), -1)); log.debug("Closing idle node connection: " + nodeId); if (client.close() || client.closed()) removeNodeClient(nodeId, client);
if (!client.async()) nodeId = node.id(); retry = client.sendMessage(nodeId, msg, ackC); client.release(); client.forceClose();
client.forceClose(); assert connIdx == client.connectionIndex() : client; if (client.reserve()) return client; else
/** * @param nodeId Node ID. * @param rmvClient Client to remove. * @return {@code True} if client was removed. */ private boolean removeNodeClient(UUID nodeId, GridCommunicationClient rmvClient) { for (;;) { GridCommunicationClient[] curClients = clients.get(nodeId); if (curClients == null || rmvClient.connectionIndex() >= curClients.length || curClients[rmvClient.connectionIndex()] != rmvClient) return false; GridCommunicationClient[] newClients = Arrays.copyOf(curClients, curClients.length); newClients[rmvClient.connectionIndex()] = null; if (clients.replace(nodeId, curClients, newClients)) return true; } }
/** {@inheritDoc} */ @Override public void doHandshake(IgniteInClosure2X<InputStream, OutputStream> handshakeC) throws IgniteCheckedException { if (failure && !matrix.hasConnection(locNode, remoteNode)) throw new IgniteCheckedException("Test", new SocketTimeoutException()); delegate.doHandshake(handshakeC); }
/** {@inheritDoc} */ @Override public boolean sendMessage(@Nullable UUID nodeId, Message msg, @Nullable IgniteInClosure<IgniteException> c) throws IgniteCheckedException { // This will enforce SPI to create new client. if (failure && !matrix.hasConnection(locNode, remoteNode)) return true; return delegate.sendMessage(nodeId, msg, c); }
/** {@inheritDoc} */ @Override public void release() { delegate.release(); }
/** {@inheritDoc} */ @Override public long getIdleTime() { return delegate.getIdleTime(); }
/** {@inheritDoc} */ @Override public boolean closed() { return delegate.closed(); }
/** {@inheritDoc} */ @Override public boolean reserve() { return delegate.reserve(); }
log.debug("Forcing close of non-existent node connection: " + nodeId); client.forceClose(); recovery = recoveryDescs.get(new ConnectionKey(node.id(), client.connectionIndex(), -1)); long idleTime = client.getIdleTime(); recovery = outRecDescs.get(new ConnectionKey(node.id(), client.connectionIndex(), -1)); log.debug("Closing idle node connection: " + nodeId); if (client.close() || client.closed()) removeNodeClient(nodeId, client);
if (!client.async()) nodeId = node.id(); retry = client.sendMessage(nodeId, msg, ackC); client.release(); client.forceClose();
client.forceClose(); assert connIdx == client.connectionIndex() : client; if (client.reserve()) return client; else
/** {@inheritDoc} */ @Override public int connectionIndex() { return delegate.connectionIndex(); } }
client.doHandshake(new HandshakeClosure(rmtNodeId));
/** {@inheritDoc} */ @Override public void sendMessage(ByteBuffer data) throws IgniteCheckedException { if (failure && !matrix.hasConnection(locNode, remoteNode)) throw new IgniteCheckedException("Test", new SocketTimeoutException()); delegate.sendMessage(data); }
client.release();