/** Returns the list of tasks by node */ public Map<DiscoveryNode, List<TaskInfo>> getPerNodeTasks() { if (nodes != null) { return nodes; } Map<DiscoveryNode, List<TaskInfo>> nodeTasks = new HashMap<>(); Set<DiscoveryNode> nodes = new HashSet<>(); for (TaskInfo shard : tasks) { nodes.add(shard.getNode()); } for (DiscoveryNode node : nodes) { List<TaskInfo> tasks = new ArrayList<>(); for (TaskInfo taskInfo : this.tasks) { if (taskInfo.getNode().equals(node)) { tasks.add(taskInfo); } } nodeTasks.put(node, tasks); } this.nodes = nodeTasks; return nodeTasks; }