private void fetchTasksForNodes(final Range range,
                                    final Consumer<TaskProgressResponse> dataConsumer,
                                    final List<String> allNodeNames,
                                    final Set<String> enabledNodeNames) {
        responseMap.clear();
        errorMap.clear();
        for (final String nodeName : allNodeNames) {
            restFactory
                    .create(TASK_RESOURCE)
                    .method(res -> res.find(nodeName, request))
                    .onSuccess(response -> {
                        responseMap.put(nodeName, response.getValues());
                        // No point in seeing errors for disabled nodes as they are likely down
                        // but do show results for disabled nodes in case they are still doing
                        // work for some reason
                        if (enabledNodeNames.contains(nodeName)) {
                            errorMap.put(nodeName, response.getErrors());
                        }
                        delayedUpdate.update();
                    })
                    .onFailure(throwable -> {
                        responseMap.remove(nodeName);
                        if (enabledNodeNames.contains(nodeName)) {
                            errorMap.put(nodeName, Collections.singletonList(throwable.getMessage()));
                        }
                        delayedUpdate.update();
                    })
                    .taskMonitorFactory(getView())
                    .exec();
        }
    }
Add the columns to the table.
stroom-core-client/src/main/java/stroom/task/client/presenter/TaskManagerListPresenter.java