List<BPOfferService> getAllBpOs() { return blockPoolManager.getAllNamenodeThreads(); }
public int getBpOsCount() { return blockPoolManager.getAllNamenodeThreads().size(); }
/** * A data node is considered to be up if one of the bp services is up */ public boolean isDatanodeUp() { for (BPOfferService bp : blockPoolManager.getAllNamenodeThreads()) { if (bp.isAlive()) { return true; } } return false; }
/** * This methods arranges for the data node to send * the block report at the next heartbeat. */ public void scheduleAllBlockReport(long delay) { for(BPOfferService bpos : blockPoolManager.getAllNamenodeThreads()) { bpos.scheduleBlockReport(delay); } }
void joinAll() { for (BPOfferService bpos: this.getAllNamenodeThreads()) { bpos.join(); } }
void join() { while (shouldRun) { try { blockPoolManager.joinAll(); if (blockPoolManager.getAllNamenodeThreads().size() == 0) { shouldRun = false; } // Terminate if shutdown is complete or 2 seconds after all BPs // are shutdown. synchronized(this) { wait(2000); } } catch (InterruptedException ex) { LOG.warn("Received exception in Datanode#join: {}", ex.toString()); } } }
/** * A datanode is considered to be fully started if all the BP threads are * alive and all the block pools are initialized. * * @return true - if the data node is fully started */ public boolean isDatanodeFullyStarted() { for (BPOfferService bp : blockPoolManager.getAllNamenodeThreads()) { if (!bp.isInitialized() || !bp.isAlive()) { return false; } } return true; }
/** * Returned information is a JSON representation of an array, * each element of the array is a map contains the information * about a block pool service actor. */ @Override // DataNodeMXBean public String getBPServiceActorInfo() { final ArrayList<Map<String, String>> infoArray = new ArrayList<Map<String, String>>(); for (BPOfferService bpos : blockPoolManager.getAllNamenodeThreads()) { if (bpos != null) { for (BPServiceActor actor : bpos.getBPServiceActors()) { infoArray.add(actor.getActorInfoMap()); } } } return JSON.toString(infoArray); }
/** * Returned information is a JSON representation of a map with * name node host name as the key and block pool Id as the value. * Note that, if there are multiple NNs in an NA nameservice, * a given block pool may be represented twice. */ @Override // DataNodeMXBean public String getNamenodeAddresses() { final Map<String, String> info = new HashMap<String, String>(); for (BPOfferService bpos : blockPoolManager.getAllNamenodeThreads()) { if (bpos != null) { for (BPServiceActor actor : bpos.getBPServiceActors()) { info.put(actor.getNNSocketAddress().getHostName(), bpos.getBlockPoolId()); } } } return JSON.toString(info); }
@Override // ClientDatanodeProtocol public void triggerBlockReport(BlockReportOptions options) throws IOException { checkSuperuserPrivilege(); for (BPOfferService bpos : blockPoolManager.getAllNamenodeThreads()) { if (bpos != null) { for (BPServiceActor actor : bpos.getBPServiceActors()) { actor.triggerBlockReport(options); } } } }
for (BPOfferService bpos : blockPoolManager.getAllNamenodeThreads()) { nsInfos.add(bpos.getNamespaceInfo());
private void handleDiskError(String failedVolumes) { final boolean hasEnoughResources = data.hasEnoughResource(); LOG.warn("DataNode.handleDiskError on: " + "[{}] Keep Running: {}", failedVolumes, hasEnoughResources); // If we have enough active valid volumes then we do not want to // shutdown the DN completely. int dpError = hasEnoughResources ? DatanodeProtocol.DISK_ERROR : DatanodeProtocol.FATAL_DISK_ERROR; metrics.incrVolumeFailures(); //inform NameNodes for(BPOfferService bpos: blockPoolManager.getAllNamenodeThreads()) { bpos.trySendErrorReport(dpError, failedVolumes); } if(hasEnoughResources) { scheduleAllBlockReport(0); return; // do not shutdown } LOG.warn("DataNode is shutting down due to failed volumes: [" + failedVolumes + "]"); shouldRun = false; }
: this.blockPoolManager.getAllNamenodeThreads();
/** * This methods arranges for the data node to send * the block report at the next heartbeat. */ public void scheduleAllBlockReport(long delay) { for(BPOfferService bpos : blockPoolManager.getAllNamenodeThreads()) { bpos.scheduleBlockReport(delay); } }
void joinAll() { for (BPOfferService bpos: this.getAllNamenodeThreads()) { bpos.join(); } }
/** * This methods arranges for the data node to send * the block report at the next heartbeat. */ public void scheduleAllBlockReport(long delay) { for(BPOfferService bpos : blockPoolManager.getAllNamenodeThreads()) { bpos.scheduleBlockReport(delay); } }
/** * A data node is considered to be up if one of the bp services is up */ public boolean isDatanodeUp() { for (BPOfferService bp : blockPoolManager.getAllNamenodeThreads()) { if (bp.isAlive()) { return true; } } return false; }
/** * A data node is considered to be up if one of the bp services is up */ public boolean isDatanodeUp() { for (BPOfferService bp : blockPoolManager.getAllNamenodeThreads()) { if (bp.isAlive()) { return true; } } return false; }
@Override // ClientDatanodeProtocol public void triggerBlockReport(BlockReportOptions options) throws IOException { checkSuperuserPrivilege(); for (BPOfferService bpos : blockPoolManager.getAllNamenodeThreads()) { if (bpos != null) { for (BPServiceActor actor : bpos.getBPServiceActors()) { actor.triggerBlockReport(options); } } } }
@Override // ClientDatanodeProtocol public void triggerBlockReport(BlockReportOptions options) throws IOException { checkSuperuserPrivilege(); for (BPOfferService bpos : blockPoolManager.getAllNamenodeThreads()) { if (bpos != null) { for (BPServiceActor actor : bpos.getBPServiceActors()) { actor.triggerBlockReport(options); } } } }