/** * @return seq of task ids that receive messages from this worker */ private Set<Integer> workerOutboundTasks() { WorkerTopologyContext context = getWorkerTopologyContext(); Set<String> components = new HashSet<>(); for (Integer taskId : localTaskIds) { for (Map<String, Grouping> value : context.getTargets(context.getComponentId(taskId)).values()) { components.addAll(value.keySet()); } } Set<Integer> outboundTasks = new HashSet<>(); for (Map.Entry<String, List<Integer>> entry : Utils.reverseMap(taskToComponent).entrySet()) { if (components.contains(entry.getKey())) { outboundTasks.addAll(entry.getValue()); } } return outboundTasks; }
LOG.info("Emitting direct: {}; {} {} {} ", outTaskId, componentId, stream, values); String targetComponent = workerTopologyContext.getComponentId(outTaskId); Map<String, LoadAwareCustomStreamGrouping> componentGrouping = streamComponentToGrouper.get(stream); LoadAwareCustomStreamGrouping grouping = componentGrouping.get(targetComponent);
public static Executor mkExecutor(WorkerState workerState, List<Long> executorId, Map<String, String> credentials) { Executor executor; WorkerTopologyContext workerTopologyContext = workerState.getWorkerTopologyContext(); List<Integer> taskIds = StormCommon.executorIdToTasks(executorId); String componentId = workerTopologyContext.getComponentId(taskIds.get(0)); String type = getExecutorType(workerTopologyContext, componentId); if (ClientStatsUtil.SPOUT.equals(type)) { executor = new SpoutExecutor(workerState, executorId, credentials); } else { executor = new BoltExecutor(workerState, executorId, credentials); } int minId = Integer.MAX_VALUE; Map<Integer, Task> idToTask = new HashMap<>(); for (Integer taskId : taskIds) { minId = Math.min(minId, taskId); try { Task task = new Task(executor, taskId); idToTask.put(taskId, task); } catch (IOException ex) { throw Utils.wrapInRuntime(ex); } } executor.idToTaskBase = minId; executor.idToTask = Utils.convertToArray(idToTask, minId); return executor; }
this.workerTopologyContext = workerData.getWorkerTopologyContext(); this.taskIds = StormCommon.executorIdToTasks(executorId); this.componentId = workerTopologyContext.getComponentId(taskIds.get(0)); this.openOrPrepareWasCalled = new AtomicBoolean(false); this.topoConf = normalizedComponentConf(workerData.getTopologyConf(), workerTopologyContext, componentId);