Java Code Examples for org.apache.helix.model.Message#getMsgType()
The following examples show how to use
org.apache.helix.model.Message#getMsgType() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ScheduledTaskStateModel.java From helix with Apache License 2.0 | 6 votes |
@Transition(to = "COMPLETED", from = "OFFLINE") public void onBecomeCompletedFromOffline(Message message, NotificationContext context) throws InterruptedException { logger.info(_partitionKey + " onBecomeCompletedFromOffline"); // Construct the inner task message from the mapfields of scheduledTaskQueue resource group Map<String, String> messageInfo = message.getRecord().getMapField(Message.Attributes.INNER_MESSAGE.toString()); ZNRecord record = new ZNRecord(_partitionKey); record.getSimpleFields().putAll(messageInfo); Message taskMessage = new Message(record); if (logger.isDebugEnabled()) { logger.debug(taskMessage.getRecord().getSimpleFields().toString()); } MessageHandler handler = _executor.createMessageHandler(taskMessage, new NotificationContext(null)); if (handler == null) { throw new HelixException("Task message " + taskMessage.getMsgType() + " handler not found, task id " + _partitionKey); } // Invoke the internal handler to complete the task handler.handleMessage(); logger.info(_partitionKey + " onBecomeCompletedFromOffline completed"); }
Example 2
Source File: DefaultControllerMessageHandlerFactory.java From helix with Apache License 2.0 | 5 votes |
@Override public MessageHandler createHandler(Message message, NotificationContext context) { String type = message.getMsgType(); if (!type.equals(getMessageType())) { throw new HelixException("Unexpected msg type for message " + message.getMsgId() + " type:" + message.getMsgType()); } return new DefaultControllerMessageHandler(message, context); }
Example 3
Source File: DefaultParticipantErrorMessageHandlerFactory.java From helix with Apache License 2.0 | 5 votes |
@Override public MessageHandler createHandler(Message message, NotificationContext context) { String type = message.getMsgType(); if (!type.equals(getMessageType())) { throw new HelixException("Unexpected msg type for message " + message.getMsgId() + " type:" + message.getMsgType()); } return new DefaultParticipantErrorMessageHandler(message, context, _manager); }
Example 4
Source File: DefaultSchedulerMessageHandlerFactory.java From helix with Apache License 2.0 | 5 votes |
@Override public MessageHandler createHandler(Message message, NotificationContext context) { String type = message.getMsgType(); if (!type.equals(getMessageType())) { throw new HelixException("Unexpected msg type for message " + message.getMsgId() + " type:" + message.getMsgType()); } return new DefaultSchedulerMessageHandler(message, context, _manager); }
Example 5
Source File: StatusUpdateUtil.java From helix with Apache License 2.0 | 5 votes |
private String getRecordIdForMessage(Message message) { if (message.getMsgType().equals(MessageType.STATE_TRANSITION)) { return message.getPartitionName() + " Trans:" + message.getFromState().charAt(0) + "->" + message.getToState().charAt(0) + " " + UUID.randomUUID().toString(); } else { return message.getMsgType() + " " + UUID.randomUUID().toString(); } }
Example 6
Source File: StatusUpdateUtil.java From helix with Apache License 2.0 | 5 votes |
/** * Generate the sub-path under STATUSUPDATE or ERROR path for a status update */ String getStatusUpdateSubPath(Message message) { if (message.getMsgType().equalsIgnoreCase(MessageType.STATE_TRANSITION.name())) { return message.getResourceName(); } return message.getMsgType(); }
Example 7
Source File: HelixStateMachineEngine.java From helix with Apache License 2.0 | 4 votes |
@Override public MessageHandler createHandler(Message message, NotificationContext context) { String type = message.getMsgType(); if (!type.equals(MessageType.STATE_TRANSITION.name()) && !type .equals(MessageType.STATE_TRANSITION_CANCELLATION.name())) { throw new HelixException("Expect state-transition message type, but was " + message.getMsgType() + ", msgId: " + message.getMsgId()); } String partitionKey = message.getPartitionName(); String stateModelName = message.getStateModelDef(); String resourceName = message.getResourceName(); String sessionId = message.getTgtSessionId(); int bucketSize = message.getBucketSize(); if (stateModelName == null) { logger .error("Fail to create msg-handler because message does not contain stateModelDef. msgId: " + message.getId()); return null; } String factoryName = message.getStateModelFactoryName(); if (factoryName == null) { factoryName = HelixConstants.DEFAULT_STATE_MODEL_FACTORY; } StateModelFactory<? extends StateModel> stateModelFactory = getStateModelFactory(stateModelName, factoryName); if (stateModelFactory == null) { logger.warn("Fail to create msg-handler because cannot find stateModelFactory for model: " + stateModelName + " using factoryName: " + factoryName + " for resource: " + resourceName); return null; } // check if the state model definition exists and cache it if (!_stateModelDefs.containsKey(stateModelName)) { HelixDataAccessor accessor = _manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); StateModelDefinition stateModelDef = accessor.getProperty(keyBuilder.stateModelDef(stateModelName)); if (stateModelDef == null) { throw new HelixException("fail to create msg-handler because stateModelDef for " + stateModelName + " does NOT exist"); } _stateModelDefs.put(stateModelName, stateModelDef); } if (!message.getBatchMessageMode()) { String initState = _stateModelDefs.get(message.getStateModelDef()).getInitialState(); StateModel stateModel = stateModelFactory.getStateModel(resourceName, partitionKey); if (stateModel == null) { stateModel = stateModelFactory.createAndAddStateModel(resourceName, partitionKey); if (stateModelName.equals(TaskConstants.STATE_MODEL_NAME) && message.getToState().equals(TaskPartitionState.DROPPED.name())) { // If stateModel is null, that means there was a reboot of the Participant. Then the // purpose of this first message must be to drop the task. We manually set the current // state to be the same state of fromState (which Controller inferred from JobContext) to // allow the Participant to successfully process this dropping transition stateModel.updateState(message.getFromState()); } else { stateModel.updateState(initState); } } if (message.getMsgType().equals(MessageType.STATE_TRANSITION_CANCELLATION.name())) { return new HelixStateTransitionCancellationHandler(stateModel, message, context); } else { // create currentStateDelta for this partition // TODO: move currentStateDelta to StateTransitionMsgHandler CurrentState currentStateDelta = new CurrentState(resourceName); currentStateDelta.setSessionId(sessionId); currentStateDelta.setStateModelDefRef(stateModelName); currentStateDelta.setStateModelFactoryName(factoryName); currentStateDelta.setBucketSize(bucketSize); currentStateDelta.setState(partitionKey, (stateModel.getCurrentState() == null) ? initState : stateModel.getCurrentState()); return new HelixStateTransitionHandler(stateModelFactory, stateModel, message, context, currentStateDelta); } } else { BatchMessageWrapper wrapper = stateModelFactory.getBatchMessageWrapper(resourceName); if (wrapper == null) { wrapper = stateModelFactory.createAndAddBatchMessageWrapper(resourceName); } // get executor-service for the message TaskExecutor executor = (TaskExecutor) context.get(MapKey.TASK_EXECUTOR.toString()); if (executor == null) { logger.error( "fail to get executor-service for batch message: " + message.getId() + ". msgType: " + message.getMsgType() + ", resource: " + message.getResourceName()); return null; } return new BatchMessageHandler(message, context, this, wrapper, executor); } }