/** * @param nodeId Target node ID. * @param c Message closure. * @return Message future. */ private IgniteInternalFuture<IgniteDiagnosticInfo> sendDiagnosticMessage(UUID nodeId, IgniteClosure<GridKernalContext, IgniteDiagnosticInfo> c) { try { IgniteDiagnosticMessage msg = IgniteDiagnosticMessage.createRequest(marsh, c, diagFutId.getAndIncrement()); InternalDiagnosticFuture fut = new InternalDiagnosticFuture(nodeId, msg.futureId()); diagnosticFuturesMap().put(msg.futureId(), fut); ctx.io().sendToGridTopic(nodeId, TOPIC_INTERNAL_DIAGNOSTIC, msg, GridIoPolicy.SYSTEM_POOL); return fut; } catch (Exception e) { U.error(diagnosticLog, "Failed to send diagnostic message: " + e); return new GridFinishedFuture<>(new IgniteDiagnosticInfo("Failed to send diagnostic message: " + e)); } }
@Override public void onEvent(Event evt) { assert evt instanceof DiscoveryEvent; assert evt.type() == EVT_NODE_FAILED || evt.type() == EVT_NODE_LEFT; DiscoveryEvent discoEvt = (DiscoveryEvent)evt; UUID nodeId = discoEvt.eventNode().id(); ConcurrentHashMap<Long, InternalDiagnosticFuture> futs = diagnosticFutMap.get(); if (futs != null) { for (InternalDiagnosticFuture fut : futs.values()) { if (fut.nodeId.equals(nodeId)) fut.onDone(new IgniteDiagnosticInfo("Target node failed: " + nodeId)); } } allNodesMetrics.remove(nodeId); } }, EVT_NODE_FAILED, EVT_NODE_LEFT);
/** * @param nodeId Target node ID. * @param c Message closure. * @return Message future. */ private IgniteInternalFuture<IgniteDiagnosticInfo> sendDiagnosticMessage(UUID nodeId, IgniteClosure<GridKernalContext, IgniteDiagnosticInfo> c) { try { IgniteDiagnosticMessage msg = IgniteDiagnosticMessage.createRequest(marsh, c, diagFutId.getAndIncrement()); InternalDiagnosticFuture fut = new InternalDiagnosticFuture(nodeId, msg.futureId()); diagnosticFuturesMap().put(msg.futureId(), fut); ctx.io().sendToGridTopic(nodeId, TOPIC_INTERNAL_DIAGNOSTIC, msg, GridIoPolicy.SYSTEM_POOL); return fut; } catch (Exception e) { U.error(diagnosticLog, "Failed to send diagnostic message: " + e); return new GridFinishedFuture<>(new IgniteDiagnosticInfo("Failed to send diagnostic message: " + e)); } }
@Override public void onEvent(Event evt) { assert evt instanceof DiscoveryEvent; assert evt.type() == EVT_NODE_FAILED || evt.type() == EVT_NODE_LEFT; DiscoveryEvent discoEvt = (DiscoveryEvent)evt; UUID nodeId = discoEvt.eventNode().id(); ConcurrentHashMap<Long, InternalDiagnosticFuture> futs = diagnosticFutMap.get(); if (futs != null) { for (InternalDiagnosticFuture fut : futs.values()) { if (fut.nodeId.equals(nodeId)) fut.onDone(new IgniteDiagnosticInfo("Target node failed: " + nodeId)); } } allNodesMetrics.remove(nodeId); } }, EVT_NODE_FAILED, EVT_NODE_LEFT);
/** * @param res Response. */ public void onResponse(IgniteDiagnosticInfo res) { onDone(res); }
fut.onResponse(res);
/** * @param res Response. */ public void onResponse(IgniteDiagnosticInfo res) { onDone(res); }