@Override public List<QueryableDruidServer> pick( Int2ObjectRBTreeMap<Set<QueryableDruidServer>> prioritizedServers, DataSegment segment, int numServersToPick ) { List<QueryableDruidServer> result = new ArrayList<>(numServersToPick); for (Set<QueryableDruidServer> priorityServers : prioritizedServers.values()) { result.addAll(serverSelectorStrategy.pick(priorityServers, segment, numServersToPick - result.size())); if (result.size() == numServersToPick) { break; } } return result; } }
public List<DruidServerMetadata> getAllServers() { List<DruidServerMetadata> servers = new ArrayList<>(); historicalServers.values() .stream() .flatMap(Collection::stream) .map(server -> server.getServer().getMetadata()) .forEach(servers::add); realtimeServers.values() .stream() .flatMap(Collection::stream) .map(server -> server.getServer().getMetadata()) .forEach(servers::add); return servers; }
@Override public List<QueryableDruidServer> pick( Int2ObjectRBTreeMap<Set<QueryableDruidServer>> prioritizedServers, DataSegment segment, int numServersToPick ) { List<QueryableDruidServer> result = new ArrayList<>(numServersToPick); for (Set<QueryableDruidServer> priorityServers : prioritizedServers.values()) { result.addAll(serverSelectorStrategy.pick(priorityServers, segment, numServersToPick - result.size())); if (result.size() == numServersToPick) { break; } } return result; } }
@Override public List<QueryableDruidServer> pick( Int2ObjectRBTreeMap<Set<QueryableDruidServer>> prioritizedServers, DataSegment segment, int numServersToPick ) { List<QueryableDruidServer> result = new ArrayList<>(numServersToPick); for (Set<QueryableDruidServer> priorityServers : prioritizedServers.values()) { result.addAll(serverSelectorStrategy.pick(priorityServers, segment, numServersToPick - result.size())); if (result.size() == numServersToPick) { break; } } return result; } }
public List<DruidServerMetadata> getAllServers() { List<DruidServerMetadata> servers = new ArrayList<>(); historicalServers.values() .stream() .flatMap(Collection::stream) .map(server -> server.getServer().getMetadata()) .forEach(servers::add); realtimeServers.values() .stream() .flatMap(Collection::stream) .map(server -> server.getServer().getMetadata()) .forEach(servers::add); return servers; }
public List<DruidServerMetadata> getCandidates(final int numCandidates) { synchronized (this) { if (numCandidates > 0) { return strategy.pick(servers, segment.get(), numCandidates) .stream() .map(server -> server.getServer().getMetadata()) .collect(Collectors.toList()); } else { // return all servers as candidates return servers.values() .stream() .flatMap(Collection::stream) .map(server -> server.getServer().getMetadata()) .collect(Collectors.toList()); } } }