/** * @return the info of all active block workers * @throws IOException when work info list cannot be obtained from master * @throws AlluxioException if network connection failed */ public List<BlockWorkerInfo> getWorkerInfoList() throws IOException, AlluxioException { List<BlockWorkerInfo> infoList = Lists.newArrayList(); try (CloseableResource<BlockMasterClient> masterClientResource = mContext.acquireMasterClientResource()) { for (WorkerInfo workerInfo : masterClientResource.get().getWorkerInfoList()) { infoList.add( new BlockWorkerInfo( workerInfo.getAddress(), workerInfo.getCapacityBytes(), workerInfo.getUsedBytes())); } return infoList; } }
/** * Gets the worker addresses with the given hostname by querying the master. Returns all the * addresses, if the hostname is an empty string. * * @param hostname hostname of the worker to query, empty string denotes any worker * @return a list of {@link WorkerNetAddress} with the given hostname */ private List<WorkerNetAddress> getWorkerAddresses(String hostname) { List<WorkerNetAddress> addresses = new ArrayList<>(); try (CloseableResource<BlockMasterClient> masterClient = acquireMasterClientResource()) { List<WorkerInfo> workers = masterClient.get().getWorkerInfoList(); for (WorkerInfo worker : workers) { if (hostname.isEmpty() || worker.getAddress().getHost().equals(hostname)) { addresses.add(worker.getAddress()); } } } catch (Exception e) { Throwables.propagate(e); } return addresses; }