/** * @param nodeId Node ID. * @param sndErr Send error. * @return {@code True} if node left. * @param ping {@code True} if try ping node. * @throws IgniteClientDisconnectedCheckedException If ping failed. */ public boolean checkNodeLeft(UUID nodeId, IgniteCheckedException sndErr, boolean ping) throws IgniteClientDisconnectedCheckedException { return cctx.gridIO().checkNodeLeft(nodeId, sndErr, ping); }
/** {@inheritDoc} */ @Override protected void onKernalStop0(boolean cancel) { cctx.gridIO().removeMessageListener(TOPIC_TX); }
/** {@inheritDoc} */ @Override protected void onKernalStop0(boolean cancel) { cctx.gridIO().removeMessageListener(TOPIC_CACHE); for (Object ordTopic : cacheHandlers.orderedHandlers.keySet()) cctx.gridIO().removeMessageListener(ordTopic); for (Object ordTopic : grpHandlers.orderedHandlers.keySet()) cctx.gridIO().removeMessageListener(ordTopic); writeLock(); try { stopping = true; } finally { rw.writeLock().unlock(); } }
/** * Removed ordered message handler. * * @param cacheGrp {@code True} if cache group message, {@code false} if cache message. * @param topic Topic. */ public void removeOrderedHandler(boolean cacheGrp, Object topic) { MessageHandlers msgHandlers = cacheGrp ? grpHandlers : cacheHandlers; if (msgHandlers.orderedHandlers.remove(topic) != null) { cctx.gridIO().removeMessageListener(topic); if (log != null && log.isDebugEnabled()) log.debug("Unregistered ordered cache communication handler for topic:" + topic); } else if (log != null) U.warn(log, "Failed to unregister ordered cache communication handler because it was not found " + "for topic: " + topic); }
/** * Adds ordered message handler. * * @param cctx Context. * @param cacheGrp {@code True} if cache group message, {@code false} if cache message. * @param topic Topic. * @param c Handler. */ private void addOrderedHandler(GridCacheSharedContext cctx, boolean cacheGrp, Object topic, IgniteBiInClosure<UUID, ? extends GridCacheMessage> c) { MessageHandlers msgHandlers = cacheGrp ? grpHandlers : cacheHandlers; IgniteLogger log0 = log; if (msgHandlers.orderedHandlers.putIfAbsent(topic, c) == null) { cctx.gridIO().addMessageListener(topic, new OrderedMessageListener( (IgniteBiInClosure<UUID, GridCacheMessage>)c)); if (log0 != null && log0.isTraceEnabled()) log0.trace("Registered ordered cache communication handler [topic=" + topic + ", handler=" + c + ']'); } else if (log0 != null) U.warn(log0, "Failed to register ordered cache communication handler because it is already " + "registered for this topic [topic=" + topic + ", handler=" + c + ']'); }
/** {@inheritDoc} */ @Override protected void start0() throws IgniteCheckedException { cctx.gridIO().addMessageListener(TOPIC_DEADLOCK_DETECTION, (nodeId, msg, plc) -> { if (msg instanceof DeadlockProbe) { if (log.isDebugEnabled()) log.debug("Received a probe message [msg=" + msg + ']'); DeadlockProbe msg0 = (DeadlockProbe)msg; handleDeadlockProbe(msg0); } else log.warning("Unexpected message received [node=" + nodeId + ", msg=" + msg + ']'); }); }
/** */ private void sendProbe(UUID destNodeId, GridCacheVersion initiatorVer, Collection<ProbedTx> waitChain, ProbedTx blocker, boolean near) { DeadlockProbe probe = new DeadlockProbe(initiatorVer, waitChain, blocker, near); if (log.isDebugEnabled()) log.debug("Sending probe [probe=" + probe + ", destNode=" + destNodeId + ']'); try { cctx.gridIO().sendToGridTopic(destNodeId, TOPIC_DEADLOCK_DETECTION, probe, SYSTEM_POOL); } catch (ClusterTopologyCheckedException ignored) { } catch (IgniteCheckedException e) { log.warning("Failed to send a deadlock probe [nodeId=" + destNodeId + ']', e); } }
/** {@inheritDoc} */ @Override public void start0() throws IgniteCheckedException { retryDelay = cctx.gridConfig().getNetworkSendRetryDelay(); retryCnt = cctx.gridConfig().getNetworkSendRetryCount(); depEnabled = cctx.gridDeploy().enabled(); cctx.gridIO().addMessageListener(TOPIC_CACHE, lsnr); }
/** * @param nodeId Node ID. * @param fut Future. * @param txKeys Tx keys. */ void txLocksInfo(UUID nodeId, TxDeadlockFuture fut, Set<IgniteTxKey> txKeys) { ClusterNode node = cctx.node(nodeId); if (node == null) { if (log.isDebugEnabled()) log.debug("Failed to finish deadlock detection, node left: " + nodeId); fut.onDone(); return; } TxLocksRequest req = new TxLocksRequest(fut.futureId(), txKeys); try { if (!cctx.localNodeId().equals(nodeId)) req.prepareMarshal(cctx); cctx.gridIO().sendToGridTopic(node, TOPIC_TX, req, SYSTEM_POOL); } catch (IgniteCheckedException e) { if (e instanceof ClusterTopologyCheckedException) { if (log.isDebugEnabled()) log.debug("Failed to finish deadlock detection, node left: " + nodeId); } else U.warn(log, "Failed to finish deadlock detection: " + e, e); fut.onDone(); } }
cctx.gridIO().dumpStats();
res.prepareMarshal(cctx); cctx.gridIO().sendToGridTopic(nodeId, TOPIC_TX, res, SYSTEM_POOL);
cctx.gridIO().dumpStats();}
cctx.gridIO().addMessageListener(TOPIC_TX, new DeadlockDetectionListener());
cctx.gridIO().sendToGridTopic(node, TOPIC_CACHE, msg, plc);
clientCtx.gridIO().addMessageListener(TOPIC, new GridMessageListener() { @Override public void onMessage(UUID nodeId, Object msg, byte plc) { if (msg instanceof TxLocksResponse) { ((IgniteKernal)ignite).context().cache().context().gridIO().sendToCustomTopic( ((IgniteKernal)client).localNode(), TOPIC, msg, GridIoPolicy.PUBLIC_POOL);
cctx.gridIO().sendToGridTopic(nodeId, TOPIC_TX, res, SYSTEM_POOL);
cnt++; cctx.gridIO().sendOrderedMessage(node, topic, msg, plc, timeout, false);
cnt++; cctx.gridIO().sendToGridTopic(node, TOPIC_CACHE, msg, plc);
/** * @param nodeId Node ID. * @param sndErr Send error. * @return {@code True} if node left. * @param ping {@code True} if try ping node. * @throws IgniteClientDisconnectedCheckedException If ping failed. */ public boolean checkNodeLeft(UUID nodeId, IgniteCheckedException sndErr, boolean ping) throws IgniteClientDisconnectedCheckedException { return cctx.gridIO().checkNodeLeft(nodeId, sndErr, ping); }
/** {@inheritDoc} */ @Override public void start0() throws IgniteCheckedException { retryDelay = cctx.gridConfig().getNetworkSendRetryDelay(); retryCnt = cctx.gridConfig().getNetworkSendRetryCount(); depEnabled = cctx.gridDeploy().enabled(); cctx.gridIO().addMessageListener(TOPIC_CACHE, lsnr); }