.append(", msgsSent=").append(desc.sent()) .append(", msgsAckedByRmt=").append(desc.acked()) .append(", msgsRcvd=").append(desc.received()) .append(", lastAcked=").append(desc.lastAcknowledged()) .append(", reserveCnt=").append(desc.reserveCount()) .append(", descIdHash=").append(System.identityHashCode(desc)) .append(']').append(U.nl()); .append(", msgsSent=").append(desc.sent()) .append(", msgsAckedByRmt=").append(desc.acked()) .append(", reserveCnt=").append(desc.reserveCount()) .append(", connected=").append(desc.connected()) .append(", reserved=").append(desc.reserved()) .append(", descIdHash=").append(System.identityHashCode(desc)) .append(']').append(U.nl()); .append(", msgsRcvd=").append(desc.received()) .append(", lastAcked=").append(desc.lastAcknowledged()) .append(", reserveCnt=").append(desc.reserveCount()) .append(", connected=").append(desc.connected()) .append(", reserved=").append(desc.reserved()) .append(", handshakeIdx=").append(desc.handshakeIndex()) .append(", descIdHash=").append(System.identityHashCode(desc)) .append(']').append(U.nl());
recovery = new GridNioRecoveryDescriptor(pairedConnections, queueLimit, node, log));
/** * @param rcvCnt Number of messages received by remote node. */ public void onHandshake(long rcvCnt) { synchronized (this) { if (!nodeLeft) ackReceived(rcvCnt); resendCnt = msgReqs.size(); } }
/** * @param recovery Recovery descriptor. * @param ses Session. */ private void sendAckOnTimeout(GridNioRecoveryDescriptor recovery, GridNioSession ses) { if (recovery != null && recovery.lastAcknowledged() != recovery.received()) { RecoveryLastReceivedMessage msg = new RecoveryLastReceivedMessage(recovery.received()); if (log.isDebugEnabled()) { log.debug("Send recovery acknowledgement on timeout [rmtNode=" + recovery.node().id() + ", rcvCnt=" + msg.received() + ", lastAcked=" + recovery.lastAcknowledged() + ']'); } try { nioSrvr.sendSystem(ses, msg); recovery.lastAcknowledged(msg.received()); } catch (IgniteCheckedException e) { U.error(log, "Failed to send message: " + e, e); } } }
/** * @return Message that is in the head of the queue, {@code null} if queue is empty. */ @Nullable SessionWriteRequest pollFuture() { SessionWriteRequest last = queue.poll(); if (last != null) { if (sem != null && !last.messageThread()) sem.release(); if (outRecovery != null) { if (!outRecovery.add(last)) { LT.warn(log, "Unacknowledged messages queue size overflow, will attempt to reconnect " + "[remoteAddr=" + remoteAddress() + ", queueLimit=" + outRecovery.queueLimit() + ']'); if (log.isDebugEnabled()) log.debug("Unacknowledged messages queue size overflow, will attempt to reconnect " + "[remoteAddr=" + remoteAddress() + ", queueSize=" + outRecovery.messagesRequests().size() + ", queueLimit=" + outRecovery.queueLimit() + ']'); close(); } } } return last; }
recovery = recoveryDescs.get(new ConnectionKey(node.id(), client.connectionIndex(), -1)); if (recovery != null && recovery.lastAcknowledged() != recovery.received()) { RecoveryLastReceivedMessage msg = new RecoveryLastReceivedMessage(recovery.received()); nioSrvr.sendSystem(((GridTcpNioCommunicationClient)client).session(), msg); recovery.lastAcknowledged(msg.received()); recovery.nodeAlive(getSpiContext().node(nodeId)) && !recovery.messagesRequests().isEmpty()) { if (log.isDebugEnabled()) log.debug("Node connection is idle, but there are unacknowledged messages, " + GridNioRecoveryDescriptor recovery = ses.inRecoveryDescriptor(); if (recovery != null && usePairedConnections(recovery.node())) { assert ses.accepted() : ses;
if (!recoveryDesc.reserve()) { U.closeQuiet(ch); GridNioSession ses = recoveryDesc.session(); recoveryDesc.onHandshake(rcvCnt); recoveryDesc.release();
recovery.incrementConnectCount(), recovery.received(), handshakeConnIdx); recovery.incrementConnectCount(), recovery.received());
desc.release();
recovery = recoveryDescs.get(new ConnectionKey(node.id(), client.connectionIndex(), -1)); if (recovery != null && recovery.lastAcknowledged() != recovery.received()) { RecoveryLastReceivedMessage msg = new RecoveryLastReceivedMessage(recovery.received()); nioSrvr.sendSystem(((GridTcpNioCommunicationClient)client).session(), msg); recovery.lastAcknowledged(msg.received()); recovery.nodeAlive(getSpiContext().node(nodeId)) && !recovery.messagesRequests().isEmpty()) { if (log.isDebugEnabled()) log.debug("Node connection is idle, but there are unacknowledged messages, " + GridNioRecoveryDescriptor recovery = ses.inRecoveryDescriptor(); if (recovery != null && usePairedConnections(recovery.node())) { assert ses.accepted() : ses;
/** * @param recovery Recovery descriptor. * @param ses Session. */ private void sendAckOnTimeout(GridNioRecoveryDescriptor recovery, GridNioSession ses) { if (recovery != null && recovery.lastAcknowledged() != recovery.received()) { RecoveryLastReceivedMessage msg = new RecoveryLastReceivedMessage(recovery.received()); if (log.isDebugEnabled()) { log.debug("Send recovery acknowledgement on timeout [rmtNode=" + recovery.node().id() + ", rcvCnt=" + msg.received() + ", lastAcked=" + recovery.lastAcknowledged() + ']'); } try { nioSrvr.sendSystem(ses, msg); recovery.lastAcknowledged(msg.received()); } catch (IgniteCheckedException e) { U.error(log, "Failed to send message: " + e, e); } } }
/** * @return Message that is in the head of the queue, {@code null} if queue is empty. */ @Nullable SessionWriteRequest pollFuture() { SessionWriteRequest last = queue.poll(); if (last != null) { if (sem != null && !last.messageThread()) sem.release(); if (outRecovery != null) { if (!outRecovery.add(last)) { LT.warn(log, "Unacknowledged messages queue size overflow, will attempt to reconnect " + "[remoteAddr=" + remoteAddress() + ", queueLimit=" + outRecovery.queueLimit() + ']'); if (log.isDebugEnabled()) log.debug("Unacknowledged messages queue size overflow, will attempt to reconnect " + "[remoteAddr=" + remoteAddress() + ", queueSize=" + outRecovery.messagesRequests().size() + ", queueLimit=" + outRecovery.queueLimit() + ']'); close(); } } } return last; }
recovery.incrementConnectCount(), recovery.received(), handshakeConnIdx); recovery.incrementConnectCount(), recovery.received());
.append(", msgsSent=").append(desc.sent()) .append(", msgsAckedByRmt=").append(desc.acked()) .append(", msgsRcvd=").append(desc.received()) .append(", lastAcked=").append(desc.lastAcknowledged()) .append(", reserveCnt=").append(desc.reserveCount()) .append(", descIdHash=").append(System.identityHashCode(desc)) .append(']').append(U.nl()); .append(", msgsSent=").append(desc.sent()) .append(", msgsAckedByRmt=").append(desc.acked()) .append(", reserveCnt=").append(desc.reserveCount()) .append(", connected=").append(desc.connected()) .append(", reserved=").append(desc.reserved()) .append(", descIdHash=").append(System.identityHashCode(desc)) .append(']').append(U.nl()); .append(", msgsRcvd=").append(desc.received()) .append(", lastAcked=").append(desc.lastAcknowledged()) .append(", reserveCnt=").append(desc.reserveCount()) .append(", connected=").append(desc.connected()) .append(", reserved=").append(desc.reserved()) .append(", handshakeIdx=").append(desc.handshakeIndex()) .append(", descIdHash=").append(System.identityHashCode(desc)) .append(']').append(U.nl());
/** * @param rcvCnt Number of messages received by remote node. */ public void onHandshake(long rcvCnt) { synchronized (this) { if (!nodeLeft) ackReceived(rcvCnt); resendCnt = msgReqs.size(); } }
recovery = new GridNioRecoveryDescriptor(pairedConnections, queueLimit, node, log));