@GET @Path("{clusterId}/controller/messages/{messageId}") public Response getClusterControllerMessages(@PathParam("clusterId") String clusterId, @PathParam("messageId") String messageId) { HelixDataAccessor dataAccessor = getDataAccssor(clusterId); Message message = dataAccessor.getProperty( dataAccessor.keyBuilder().controllerMessage(messageId)); return JSONRepresentation(message.getRecord()); }
keys.add(keyBuilder.message(instanceName, messageId)); } else if (changeType.equals(HelixConstants.ChangeType.MESSAGES_CONTROLLER)) { keys.add(keyBuilder.controllerMessage(messageId));
keys.add(keyBuilder.message(instanceName, messageId)); } else if (changeType.equals(HelixConstants.ChangeType.MESSAGES_CONTROLLER)) { keys.add(keyBuilder.controllerMessage(messageId));
PropertyKey controllerMessageKey = keyBuilder.controllerMessage(schedulerMessage.getMsgId()); helixDataAccessor.setProperty(controllerMessageKey, schedulerMessage);
DefaultSchedulerMessageHandlerFactory.SCHEDULER_TASK_QUEUE, taskQueueName); accessor.setProperty(accessor.keyBuilder().controllerMessage(schedulerMessage.getMsgId()), schedulerMessage);
accessor.setProperty(keyBuilder.controllerMessage(tempMessage.getId()), tempMessage);
if (receiverType == InstanceType.CONTROLLER) { targetDataAccessor .setProperty(keyBuilder.controllerMessage(tempMessage.getId()), tempMessage); } else if (receiverType == InstanceType.PARTICIPANT) { targetDataAccessor
private void sendReply(HelixDataAccessor replyDataAccessor, Message message, HelixTaskResult taskResult) { if (message.getCorrelationId() != null && !message.getMsgType() .equals(MessageType.TASK_REPLY.name())) { logger.info("Sending reply for message " + message.getCorrelationId()); _statusUpdateUtil.logInfo(message, HelixTask.class, "Sending reply", _manager); taskResult.getTaskResultMap().put("SUCCESS", "" + taskResult.isSuccess()); taskResult.getTaskResultMap().put("INTERRUPTED", "" + taskResult.isInterrupted()); if (!taskResult.isSuccess()) { taskResult.getTaskResultMap().put("ERRORINFO", taskResult.getMessage()); } Message replyMessage = Message .createReplyMessage(message, _manager.getInstanceName(), taskResult.getTaskResultMap()); replyMessage.setSrcInstanceType(_manager.getInstanceType()); Builder keyBuilder = replyDataAccessor.keyBuilder(); if (message.getSrcInstanceType() == InstanceType.PARTICIPANT) { replyDataAccessor .setProperty(keyBuilder.message(message.getMsgSrc(), replyMessage.getMsgId()), replyMessage); } else if (message.getSrcInstanceType() == InstanceType.CONTROLLER) { replyDataAccessor .setProperty(keyBuilder.controllerMessage(replyMessage.getMsgId()), replyMessage); } _statusUpdateUtil.logInfo(message, HelixTask.class, String .format("1 msg replied to %s in cluster %s.", replyMessage.getTgtName(), message.getSrcClusterName() == null ? _manager.getClusterName() : message.getSrcClusterName()), _manager); } }
private void sendReply(HelixDataAccessor accessor, Message message, HelixTaskResult taskResult) { if (_message.getCorrelationId() != null && !message.getMsgType().equals(MessageType.TASK_REPLY.name())) { logger.info("Sending reply for message " + message.getCorrelationId()); _statusUpdateUtil.logInfo(message, HelixTask.class, "Sending reply", _manager); taskResult.getTaskResultMap().put("SUCCESS", "" + taskResult.isSuccess()); taskResult.getTaskResultMap().put("INTERRUPTED", "" + taskResult.isInterrupted()); if (!taskResult.isSuccess()) { taskResult.getTaskResultMap().put("ERRORINFO", taskResult.getMessage()); } Message replyMessage = Message.createReplyMessage(_message, _manager.getInstanceName(), taskResult.getTaskResultMap()); replyMessage.setSrcInstanceType(_manager.getInstanceType()); if (message.getSrcInstanceType() == InstanceType.PARTICIPANT) { Builder keyBuilder = accessor.keyBuilder(); accessor.setProperty(keyBuilder.message(message.getMsgSrc(), replyMessage.getMsgId()), replyMessage); } else if (message.getSrcInstanceType() == InstanceType.CONTROLLER) { Builder keyBuilder = accessor.keyBuilder(); accessor.setProperty(keyBuilder.controllerMessage(replyMessage.getMsgId()), replyMessage); } _statusUpdateUtil.logInfo(message, HelixTask.class, "1 msg replied to " + replyMessage.getTgtName(), _manager); } }
private void sendNopMessage() { if (_manager.isConnected()) { try { Message nopMsg = new Message(MessageType.NO_OP, UUID.randomUUID().toString()); nopMsg.setSrcName(_manager.getInstanceName()); HelixDataAccessor accessor = _manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); if (_manager.getInstanceType() == InstanceType.CONTROLLER || _manager.getInstanceType() == InstanceType.CONTROLLER_PARTICIPANT) { nopMsg.setTgtName(InstanceType.CONTROLLER.name()); accessor.setProperty(keyBuilder.controllerMessage(nopMsg.getId()), nopMsg); } if (_manager.getInstanceType() == InstanceType.PARTICIPANT || _manager.getInstanceType() == InstanceType.CONTROLLER_PARTICIPANT) { nopMsg.setTgtName(_manager.getInstanceName()); accessor.setProperty(keyBuilder.message(nopMsg.getTgtName(), nopMsg.getId()), nopMsg); } logger.info("Send NO_OP message to " + nopMsg.getTgtName() + ", msgId: " + nopMsg.getId()); } catch (Exception e) { logger.error(e.toString()); } } }
private void sendNopMessage() { if (_manager.isConnected()) { try { Message nopMsg = new Message(MessageType.NO_OP, UUID.randomUUID().toString()); nopMsg.setSrcName(_manager.getInstanceName()); HelixDataAccessor accessor = _manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); if (_manager.getInstanceType() == InstanceType.CONTROLLER || _manager.getInstanceType() == InstanceType.CONTROLLER_PARTICIPANT) { nopMsg.setTgtName(InstanceType.CONTROLLER.name()); accessor.setProperty(keyBuilder.controllerMessage(nopMsg.getId()), nopMsg); } if (_manager.getInstanceType() == InstanceType.PARTICIPANT || _manager.getInstanceType() == InstanceType.CONTROLLER_PARTICIPANT) { nopMsg.setTgtName(_manager.getInstanceName()); accessor.setProperty(keyBuilder.message(nopMsg.getTgtName(), nopMsg.getId()), nopMsg); } logger.info("Send NO_OP message to " + nopMsg.getTgtName() + ", msgId: " + nopMsg.getId()); } catch (Exception e) { logger.error(e.toString()); } } }
private void syncSessionToController(HelixManager manager) { if (_lastSessionSyncTime == null || System.currentTimeMillis() - _lastSessionSyncTime > SESSION_SYNC_INTERVAL) { // > delay since last sync HelixDataAccessor accessor = manager.getHelixDataAccessor(); PropertyKey key = new Builder(manager.getClusterName()).controllerMessage(SESSION_SYNC); if (accessor.getProperty(key) == null) { LOG.info(String.format("Participant %s syncs session with controller", manager.getInstanceName())); Message msg = new Message(MessageType.PARTICIPANT_SESSION_CHANGE, SESSION_SYNC); msg.setSrcName(manager.getInstanceName()); msg.setTgtSessionId("*"); msg.setMsgState(MessageState.NEW); msg.setMsgId(SESSION_SYNC); Criteria cr = new Criteria(); cr.setRecipientInstanceType(InstanceType.CONTROLLER); cr.setSessionSpecific(false); manager.getMessagingService().send(cr, msg); _lastSessionSyncTime = System.currentTimeMillis(); } } }
private void sendNopMessageInternal() { try { Message nopMsg = new Message(MessageType.NO_OP, UUID.randomUUID().toString()); nopMsg.setSrcName(_manager.getInstanceName()); HelixDataAccessor accessor = _manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); if (_manager.getInstanceType() == InstanceType.CONTROLLER || _manager.getInstanceType() == InstanceType.CONTROLLER_PARTICIPANT) { nopMsg.setTgtName(InstanceType.CONTROLLER.name()); accessor.setProperty(keyBuilder.controllerMessage(nopMsg.getId()), nopMsg); } if (_manager.getInstanceType() == InstanceType.PARTICIPANT || _manager.getInstanceType() == InstanceType.CONTROLLER_PARTICIPANT) { nopMsg.setTgtName(_manager.getInstanceName()); accessor.setProperty(keyBuilder.message(nopMsg.getTgtName(), nopMsg.getId()), nopMsg); } } catch (Exception e) { _logger.error(e.toString()); } }
private void syncSessionToController(HelixManager manager) { if (_lastSessionSyncTime == null || System.currentTimeMillis() - _lastSessionSyncTime > SESSION_SYNC_INTERVAL) { // > delay since last sync HelixDataAccessor accessor = manager.getHelixDataAccessor(); PropertyKey key = new Builder(manager.getClusterName()).controllerMessage(SESSION_SYNC); if (accessor.getProperty(key) == null) { LOG.info(String.format("Participant %s syncs session with controller", manager.getInstanceName())); Message msg = new Message(MessageType.PARTICIPANT_SESSION_CHANGE, SESSION_SYNC); msg.setSrcName(manager.getInstanceName()); msg.setTgtSessionId("*"); msg.setMsgState(MessageState.NEW); msg.setMsgId(SESSION_SYNC); Criteria cr = new Criteria(); cr.setRecipientInstanceType(InstanceType.CONTROLLER); cr.setSessionSpecific(false); manager.getMessagingService().send(cr, msg); _lastSessionSyncTime = System.currentTimeMillis(); } } }
private void sendNopMessageInternal() { try { Message nopMsg = new Message(MessageType.NO_OP, UUID.randomUUID().toString()); nopMsg.setSrcName(_manager.getInstanceName()); HelixDataAccessor accessor = _manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); if (_manager.getInstanceType() == InstanceType.CONTROLLER || _manager.getInstanceType() == InstanceType.CONTROLLER_PARTICIPANT) { nopMsg.setTgtName(InstanceType.CONTROLLER.name()); accessor.setProperty(keyBuilder.controllerMessage(nopMsg.getId()), nopMsg); } if (_manager.getInstanceType() == InstanceType.PARTICIPANT || _manager.getInstanceType() == InstanceType.CONTROLLER_PARTICIPANT) { nopMsg.setTgtName(_manager.getInstanceName()); accessor.setProperty(keyBuilder.message(nopMsg.getTgtName(), nopMsg.getId()), nopMsg); } } catch (Exception e) { _logger.error(e.toString()); } }
/** * Get the {@link PropertyKey} for this message * @param keyBuilder PropertyKey Builder * @param instanceName target instance * @return message PropertyKey */ public PropertyKey getKey(Builder keyBuilder, String instanceName) { if (isControlerMsg()) { return keyBuilder.controllerMessage(getId()); } else { return keyBuilder.message(instanceName, getId()); } }
/** * Get the {@link PropertyKey} for this message * @param keyBuilder PropertyKey Builder * @param instanceName target instance * @return message PropertyKey */ public PropertyKey getKey(Builder keyBuilder, String instanceName) { if (isControlerMsg()) { return keyBuilder.controllerMessage(getId()); } else { return keyBuilder.message(instanceName, getId()); } }