static Message error(String line) { return create(MessageLevel.ERROR, line); }
@Override public String info(WorkflowInstance workflowInstance, Message message) { return message.line(); }
@Override public void printStates(RunStateDataPayload runStateDataPayload) { System.out.println(String.format(" %-20s %-12s %-47s %-7s %s", "WORKFLOW INSTANCE", "STATE", "EXECUTION ID", "TRIES", "PREVIOUS EXECUTION MESSAGE")); CliUtil.groupStates(runStateDataPayload.activeStates()).entrySet().forEach(entry -> { System.out.println(); System.out.println(String.format("%s %s", colored(CYAN, entry.getKey().componentId()), colored(BLUE, entry.getKey().id()))); entry.getValue().forEach(runStateData -> { final StateData stateData = runStateData.stateData(); final Ansi ansiState = getAnsiForState(runStateData); final Message lastMessage = stateData.message().orElse(Message.create(Message.MessageLevel.UNKNOWN, "No info")); final Ansi ansiMessage = colored(messageColor(lastMessage.level()), lastMessage.line()); System.out.println(String.format(" %-20s %-20s %-47s %-7d %s", runStateData.workflowInstance().parameter(), ansiState, stateData.executionId().orElse("<no-execution-id>"), stateData.tries(), ansiMessage)); }); }); }
public static void emitResourceLimitReachedMessage(StateManager stateManager, RunState runState, List<String> depletedResources) { if (depletedResources.isEmpty()) { throw new IllegalArgumentException(); } final List<String> depletedResourcesOrdered = depletedResources.stream().sorted().collect(toList()); final Message message = Message.info("Resource limit reached for: " + depletedResourcesOrdered); if (!runState.data().message().map(message::equals).orElse(false)) { stateManager.receiveIgnoreClosed(Event.info(runState.workflowInstance(), message), runState.counter()); } } }
@Override public RunState runError(WorkflowInstance workflowInstance, String message) { switch (state()) { case QUEUED: case SUBMITTING: case SUBMITTED: case RUNNING: case PREPARE: final StateData newStateData = data().builder() .retryCost(data().retryCost() + FAILURE_COST) .lastExit(empty()) .consecutiveFailures(data().consecutiveFailures() + 1) .messages(Message.error(message)) .build(); return state(FAILED, newStateData); default: throw illegalTransition("runError"); } }
static Message warning(String line) { return create(MessageLevel.WARNING, line); }
static Message info(String line) { return create(MessageLevel.INFO, line); }
@Override public RunState terminate(WorkflowInstance workflowInstance, Optional<Integer> exitCode) { switch (state()) { case RUNNING: final double cost = exitCost(exitCode); final int consecutiveFailures = consecutiveFailures(data(), exitCode); final MessageLevel level = messageLevel(exitCode); final StateData newStateData = data().builder() .retryCost(data().retryCost() + cost) .lastExit(exitCode) .consecutiveFailures(consecutiveFailures) .messages(Message.create(level, "Exit code: " + exitCode.map(String::valueOf).orElse("-"))) .build(); return state(TERMINATED, newStateData); default: throw illegalTransition("terminate"); } }