/** * Extracts rpcPort InetSocketAddress from Alluxio representation of network address. * * @param netAddress the input network address representation * @return InetSocketAddress */ public static InetSocketAddress getRpcPortSocketAddress(WorkerNetAddress netAddress) { String host = netAddress.getHost(); int port = netAddress.getRpcPort(); return new InetSocketAddress(host, port); }
@Override public String createBlock(long sessionId, long blockId, String tierAlias, long initialBytes) throws BlockAlreadyExistsException, WorkerOutOfSpaceException, IOException { BlockStoreLocation loc = BlockStoreLocation.anyDirInTier(tierAlias); TempBlockMeta createdBlock; try { createdBlock = mBlockStore.createBlock(sessionId, blockId, loc, initialBytes); } catch (WorkerOutOfSpaceException e) { InetSocketAddress address = InetSocketAddress.createUnresolved(mAddress.getHost(), mAddress.getRpcPort()); throw new WorkerOutOfSpaceException(ExceptionMessage.CANNOT_REQUEST_SPACE .getMessageWithUrl(RuntimeConstants.ALLUXIO_DEBUG_DOCS_URL, address, blockId), e); } return createdBlock.getPath(); }
/** * Re-register a lost worker or complete registration after getting a worker id. * * @param workerId the worker id to register */ @Nullable private MasterWorkerInfo registerWorkerInternal(long workerId) { for (IndexedSet<MasterWorkerInfo> workers: Arrays.asList(mTempWorkers, mLostWorkers)) { MasterWorkerInfo worker = workers.getFirstByField(ID_INDEX, workerId); if (worker == null) { continue; } synchronized (worker) { worker.updateLastUpdatedTimeMs(); mWorkers.add(worker); workers.remove(worker); if (workers == mLostWorkers) { for (Consumer<Address> function : mLostWorkerFoundListeners) { function.accept(new Address(worker.getWorkerAddress().getHost(), worker.getWorkerAddress().getRpcPort())); } LOG.warn("A lost worker {} has requested its old id {}.", worker.getWorkerAddress(), worker.getId()); } } return worker; } return null; }
@Override public void heartbeat() { long masterWorkerTimeoutMs = ServerConfiguration.getMs(PropertyKey.MASTER_WORKER_TIMEOUT_MS); for (MasterWorkerInfo worker : mWorkers) { synchronized (worker) { final long lastUpdate = mClock.millis() - worker.getLastUpdatedTimeMs(); if (lastUpdate > masterWorkerTimeoutMs) { LOG.error("The worker {}({}) timed out after {}ms without a heartbeat!", worker.getId(), worker.getWorkerAddress(), lastUpdate); mLostWorkers.add(worker); mWorkers.remove(worker); WorkerNetAddress workerAddress = worker.getWorkerAddress(); for (Consumer<Address> function : mWorkerLostListeners) { function.accept(new Address(workerAddress.getHost(), workerAddress.getRpcPort())); } processWorkerRemovedBlocks(worker, worker.getBlocks()); } } } }
for (BiConsumer<Address, List<ConfigProperty>> function : mWorkerRegisteredListeners) { WorkerNetAddress workerAddress = worker.getWorkerAddress(); function.accept(new Address(workerAddress.getHost(), workerAddress.getRpcPort()), options.getConfigsList());
public void checkEquality(WorkerNetAddress a, WorkerNetAddress b) { Assert.assertEquals(a.getHost(), b.getHost()); Assert.assertEquals(a.getRpcPort(), b.getRpcPort()); Assert.assertEquals(a.getDataPort(), b.getDataPort()); Assert.assertEquals(a.getWebPort(), b.getWebPort()); Assert.assertEquals(a.getTieredIdentity(), b.getTieredIdentity()); Assert.assertEquals(a, b); }
/** * Converts wire type to proto type. * * @param workerNetAddress the wire representation to convert * @return the converted proto representation */ public static alluxio.grpc.WorkerNetAddress toProto(WorkerNetAddress workerNetAddress) { alluxio.grpc.WorkerNetAddress.Builder address = alluxio.grpc.WorkerNetAddress.newBuilder() .setHost(workerNetAddress.getHost()).setRpcPort(workerNetAddress.getRpcPort()) .setDataPort(workerNetAddress.getDataPort()).setWebPort(workerNetAddress.getWebPort()) .setDomainSocketPath(workerNetAddress.getDomainSocketPath()); if (workerNetAddress.getTieredIdentity() != null) { address.setTieredIdentity(toProto(workerNetAddress.getTieredIdentity())); } return address.build(); }
/** * Extracts rpcPort InetSocketAddress from Alluxio representation of network address. * * @param netAddress the input network address representation * @return InetSocketAddress */ public static InetSocketAddress getRpcPortSocketAddress(WorkerNetAddress netAddress) { String host = netAddress.getHost(); int port = netAddress.getRpcPort(); return new InetSocketAddress(host, port); }
/** * Re-register a lost worker or complete registration after getting a worker id. * * @param workerId the worker id to register */ @Nullable private MasterWorkerInfo registerWorkerInternal(long workerId) { for (IndexedSet<MasterWorkerInfo> workers: Arrays.asList(mTempWorkers, mLostWorkers)) { MasterWorkerInfo worker = workers.getFirstByField(ID_INDEX, workerId); if (worker == null) { continue; } synchronized (worker) { worker.updateLastUpdatedTimeMs(); mWorkers.add(worker); workers.remove(worker); if (workers == mLostWorkers) { for (Consumer<Address> function : mLostWorkerFoundListeners) { function.accept(new Address(worker.getWorkerAddress().getHost(), worker.getWorkerAddress().getRpcPort())); } LOG.warn("A lost worker {} has requested its old id {}.", worker.getWorkerAddress(), worker.getId()); } } return worker; } return null; }
for (BiConsumer<Address, List<ConfigProperty>> function : mWorkerRegisteredListeners) { WorkerNetAddress workerAddress = worker.getWorkerAddress(); function.accept(new Address(workerAddress.getHost(), workerAddress.getRpcPort()), wireConfigList);
@Override public void heartbeat() { long masterWorkerTimeoutMs = Configuration.getMs(PropertyKey.MASTER_WORKER_TIMEOUT_MS); for (MasterWorkerInfo worker : mWorkers) { synchronized (worker) { final long lastUpdate = mClock.millis() - worker.getLastUpdatedTimeMs(); if (lastUpdate > masterWorkerTimeoutMs) { LOG.error("The worker {}({}) timed out after {}ms without a heartbeat!", worker.getId(), worker.getWorkerAddress(), lastUpdate); mLostWorkers.add(worker); mWorkers.remove(worker); WorkerNetAddress workerAddress = worker.getWorkerAddress(); for (Consumer<Address> function : mWorkerLostListeners) { function.accept(new Address(workerAddress.getHost(), workerAddress.getRpcPort())); } processWorkerRemovedBlocks(worker, worker.getBlocks()); } } } }