private void sendHbMsg() { List values = JStormUtils.mk_list(uptime.uptime()); if (spoutOutputCollector != null) { spoutOutputCollector.emit(Common.TOPOLOGY_MASTER_HB_STREAM_ID, values); } else if (boltOutputCollector != null) { boltOutputCollector.emit(Common.TOPOLOGY_MASTER_HB_STREAM_ID, values); } else { LOG.warn("Failed to send hearbeat msg. OutputCollector has not been initialized!"); } }
@Override public void run() { try { updateObject(); if (object == null) { LOG.info("Timer " + name + " 's object is null "); return; } if (intervalCheck.check()) { checkExecuteThreadHb(); } if (componentId.equals(Common.TOPOLOGY_MASTER_COMPONENT_ID)) { Values values = new Values(uptime.uptime()); TupleExt tuple = new TupleImplExt(sysTopologyCtx, values, taskId, Common.TOPOLOGY_MASTER_HB_STREAM_ID); queue.publish(tuple); } else { // Send task heartbeat to topology master sendHbMsg(); } // Send message used to monitor execute thread TimerEvent event = new TimerEvent(opCode, object); boolean ret = controlQueue.offer(event); if (ret) LOG.debug("Offer task HB event to controlQueue, taskId=" + taskId); else LOG.debug("Failed to offer task HB event to controlQueue, taskId=" + taskId); } catch (Exception e) { LOG.warn("Failed to publish timer event to " + name, e); return; } LOG.debug(" Trigger timer event to " + name); }