private int getTotalTaskLimit(final JobNodeTrackers trackers) {
        int totalTaskLimit = 0;
        final Collection<JobNodeTracker> trackerList = trackers.getDistributedJobNodeTrackers();
        for (final JobNodeTracker tracker : trackerList) {
            final int taskLimit = tracker.getJobNode().getTaskLimit() - tracker.getCurrentTaskCount();
            totalTaskLimit += taskLimit;
        }
        return totalTaskLimit;
    }
Tries to fetch tasks asynchronously if we aren't already fetching tasks.
If we are it will make sure we immediately try and fetch tasks again
after the previous fetch.
stroom-job/stroom-job-impl/src/main/java/stroom/job/impl/DistributedTaskFetcher.java