/** * @param evt Discovery event. */ public void onDiscoveryEvent(GridDiscoveryEvent evt) { if (log.isDebugEnabled()) log.debug("Processing discovery event: " + evt); if (evt.type() == GridEventType.EVT_NODE_FAILED || evt.type() == EVT_NODE_LEFT) onNodeLeft(evt.eventNode().id()); synchronized (this) { lastSnapshot = new GridDiscoveryTopologySnapshot(evt.topologyVersion(), evt.topologyNodes()); notifyAll(); } }
@SuppressWarnings("fallthrough") @Override public void onEvent(GridEvent evt) { assert evt instanceof GridDiscoveryEvent; GridDiscoveryEvent discoEvt = (GridDiscoveryEvent)evt; UUID evtNodeId = discoEvt.eventNode().id(); switch (discoEvt.type()) { case EVT_NODE_JOINED: GridNode node = getSpiContext().node(evtNodeId); if (node != null) { nodeQueue.offer(node); sndMsgMap.putIfAbsent(node.id(), new MessageInfo()); rcvMsgMap.putIfAbsent(node.id(), new MessageInfo()); } break; case EVT_NODE_LEFT: case EVT_NODE_FAILED: Iterator<GridNode> iter = nodeQueue.iterator(); while (iter.hasNext()) { GridNode nextNode = iter.next(); if (nextNode.id().equals(evtNodeId)) iter.remove(); } sndMsgMap.remove(evtNodeId); rcvMsgMap.remove(evtNodeId); break; default: assert false : "Unexpected event: " + evt; } } },
/** * @param part Partition. * @param type Type. * @param discoEvt Discovery event. */ private void preloadEvent(int part, int type, GridDiscoveryEvent discoEvt) { assert discoEvt != null; cctx.events().addPreloadEvent(part, type, discoEvt.eventNode(), discoEvt.type(), discoEvt.timestamp()); }
GridNode loc = cctx.localNode(); assert e.type() == EVT_NODE_JOINED || e.type() == EVT_NODE_LEFT || e.type() == EVT_NODE_FAILED; f.onDiscoveryEvent(e); if (e.type() == EVT_NODE_LEFT || e.type() == EVT_NODE_FAILED) { assert cctx.discovery().node(n.id()) == null; assert e.type() != EVT_NODE_JOINED || n.order() > loc.order() : "Node joined with smaller-than-local " + "order [newOrder=" + n.order() + ", locOrder=" + loc.order() + ']'; GridDhtPartitionExchangeId exchId = exchangeId(n.id(), e.topologyVersion(), e.type()); if (e.type() == EVT_NODE_LEFT || e.type() == EVT_NODE_FAILED) { for (GridDhtAssignmentFetchFuture<K, V> fut : pendingAssignmentFetchFuts.values()) fut.onNodeLeft(e.eventNode().id());
GridDiscoveryEvent discoEvt = ctx.discoveryEvent(); UUID leftNodeId = discoEvt.type() == GridEventType.EVT_NODE_JOINED ? null : discoEvt.eventNode().id();
/** * @param evt Discovery event. */ @SuppressWarnings( {"unchecked"}) public void onDiscoveryEvent(GridDiscoveryEvent evt) { topCntr.incrementAndGet(); int type = evt.type(); for (GridFuture<?> f : futures()) { if (isMini(f)) { MiniFuture mini = (MiniFuture)f; mini.onDiscoveryEvent(); if (type == EVT_NODE_LEFT || type == EVT_NODE_FAILED) { if (mini.node().id().equals(evt.eventNode().id())) { mini.onResult(new GridTopologyException("Node left grid (will retry): " + evt.eventNode().id())); break; } } } } }
evt.type(type);
discoEvt.type(), discoEvt.timestamp());