noResAddrs.clear(); msgWorker = new RingMessageWorker(log);
spi.writeToSocket(msg, sock, RES_OK, sockTimeout); msgWorker.addMessage(msg); ringMessageReceived(); msgWorker.addMessage(msg);
ringMessageReceived(); msgWorker.addMessage(msg);
msgLsnr.apply(msg); sendMessageToClients(msg); msg.senderNodeId(locNodeId); addMessage(msg); segmentLocalNodeOnSendFail(); nextNew = hasPendingAddMessage(nextId); registerPendingMessage(msg); segmentLocalNodeOnSendFail(); msgWorker.addMessage(new TcpDiscoveryNodeFailedMessage(locNodeId, n.id(), n.internalOrder())); msgWorker.addMessage(pendingMsg);
trySendMessageDirectly(node, new TcpDiscoveryLoopbackProblemMessage( locNodeId, locNode.addresses(), locNode.hostNames())); U.warn(log, "Sending node failed message for existing node: " + node); addMessage(new TcpDiscoveryNodeFailedMessage(locNodeId, existingNode.id(), existingNode.internalOrder())); trySendMessageDirectly(node, new TcpDiscoveryDuplicateIdMessage(locNodeId, existingNode)); if (sendMessageToRemotes(reconMsg)) sendMessageAcrossRing(reconMsg); trySendMessageDirectly(node, new TcpDiscoveryAuthFailedMessage(locNodeId, spi.locHost)); trySendMessageDirectly(node, new TcpDiscoveryAuthFailedMessage(locNodeId, spi.locHost)); ", rmtNodeId=" + locNode.id() + ']'; nodeCheckError(node, errMsg, sndMsg); processNodeAddedMessage(nodeAddedMsg); else if (sendMessageToRemotes(msg)) sendMessageAcrossRing(msg);
processNodeAddFinishedMessage(addFinishMsg); addMessage(new TcpDiscoveryDiscardMessage(locNodeId, msg.id(), false)); if (sendMessageToRemotes(msg)) sendMessageAcrossRing(msg); if (authFailed) { try { trySendMessageDirectly(node, new TcpDiscoveryAuthFailedMessage(locNodeId, spi.locHost)); addMessage(new TcpDiscoveryNodeFailedMessage(locNodeId, node.id(), node.internalOrder())); if (sendMessageToRemotes(msg)) sendMessageAcrossRing(msg);
sendMessageAcrossRing(msg); spi.stats.onRingMessageReceived(msg); addMessage(new TcpDiscoveryDiscardMessage(locNodeId, msg.id(), false)); if (sendMessageToRemotes(msg)) { try { sendMessageAcrossRing(msg); checkPendingCustomMessages();
if (msgWorker != null && msgWorker.runner() != null && msgWorker.runner().isAlive() && !disconnect) { msgWorker.addMessage(new TcpDiscoveryNodeLeftMessage(locNode.id()));
spi.stats.onRingMessageReceived(msg); addMessage(new TcpDiscoveryDiscardMessage(locNodeId, msg.id(), false)); if (sendMessageToRemotes(msg)) sendMessageAcrossRing(msg); checkPendingCustomMessages();
spi.stats.onRingMessageReceived(msg); addMessage(new TcpDiscoveryDiscardMessage(locNodeId, msg.id(), false)); if (sendMessageToRemotes(msg)) sendMessageAcrossRing(msg); else { if (log.isDebugEnabled()) checkPendingCustomMessages();
notifyDiscoveryListener(msg, waitForNotification); if (sendMessageToRemotes(msg)) sendMessageAcrossRing(msg); else { registerPendingMessage(msg); processCustomMessage(msg, waitForNotification); addMessage(new TcpDiscoveryDiscardMessage(getLocalNodeId(), msg.id(), true)); processCustomMessage(ackMsg, waitForNotification); "msg: " + msg + ", topVer=" + ring.topologyVersion(); notifyDiscoveryListener(msg, waitForNotification); msg.message(null, msg.messageBytes()); if (sendMessageToRemotes(msg)) sendMessageAcrossRing(msg);
if (locNodeId.equals(msg.creatorNodeId()) && !hasMetrics(msg, locNodeId) && msg.senderNodeId() != null) { if (log.isTraceEnabled()) log.trace("Discarding metrics update message that has made two passes: " + msg); msg.cacheMetrics().get(nodeId) : Collections.<Integer, CacheMetrics>emptyMap(); updateMetrics(nodeId, metricsSet.metrics(), cacheMetrics, tstamp); updateMetrics(t.get1(), t.get2(), cacheMetrics, tstamp); if (sendMessageToRemotes(msg)) { if ((locNodeId.equals(msg.creatorNodeId()) && msg.senderNodeId() == null || !hasMetrics(msg, locNodeId)) && spiStateCopy() == CONNECTED) { locNodeId, clientNode.id(), clientNode.internalOrder()); processNodeFailedMessage(nodeFailedMsg); if (sendMessageToRemotes(msg)) sendMessageAcrossRing(msg);
node.id(), node.internalOrder()); msgWorker.addMessage(nodeFailedMsg); msgWorker.addMessage(msg); msgWorker.addMessage(msg); msgWorker.addMessage(new TcpDiscoveryDiscardMessage(locNodeId, msg.id(), false)); msgWorker.addMessage(msg);
noResAddrs.clear(); msgWorker = new RingMessageWorker(log);
msgWorker.addMessage(msg);
U.warn(log, "Added node failed message for node from failed nodes list: " + msg); addMessage(msg);
/** {@inheritDoc} */ @Override public boolean pingNode(UUID nodeId) { assert nodeId != null; if (nodeId == getLocalNodeId()) return true; TcpDiscoveryNode node = ring.node(nodeId); if (node == null) return false; if (!nodeAlive(nodeId)) return false; long start = U.currentTimeMillis(); if (log.isInfoEnabled()) log.info("Pinging node: " + nodeId); boolean res = pingNode(node); long end = System.currentTimeMillis(); if (log.isInfoEnabled()) log.info("Finished node ping [nodeId=" + nodeId + ", res=" + res + ", time=" + (end - start) + "ms]"); if (!res && node.clientRouterNodeId() == null && nodeAlive(nodeId)) { LT.warn(log, "Failed to ping node (status check will be initiated): " + nodeId); msgWorker.addMessage(new TcpDiscoveryStatusCheckMessage(locNode, node.id())); } return res; }
/** * <strong>FOR TEST ONLY!!!</strong> * <p> * Simulates situation when next node is still alive but is bypassed * since it has been excluded from the ring, possibly, due to short time * network problems. * <p> * This method is intended for test purposes only. */ void forceNextNodeFailure() { U.warn(log, "Next node will be forcibly failed (if any)."); TcpDiscoveryNode next; synchronized (mux) { next = ring.nextNode(failedNodes.keySet()); } if (next != null) msgWorker.addMessage(new TcpDiscoveryNodeFailedMessage(getLocalNodeId(), next.id(), next.internalOrder())); }
/** {@inheritDoc} */ @Override public void sendCustomEvent(DiscoverySpiCustomMessage evt) { try { TcpDiscoveryAbstractMessage msg; if (((CustomMessageWrapper)evt).delegate() instanceof DiscoveryServerOnlyCustomMessage) msg = new TcpDiscoveryServerOnlyCustomEventMessage(getLocalNodeId(), evt, U.marshal(spi.marshaller(), evt)); else msg = new TcpDiscoveryCustomEventMessage(getLocalNodeId(), evt, U.marshal(spi.marshaller(), evt)); msgWorker.addMessage(msg); } catch (IgniteCheckedException e) { throw new IgniteSpiException("Failed to marshal custom event: " + evt, e); } }