LocatedBlocks blocks = NameNodeAdapter.getBlockLocations( cluster.getNameNode(), fileName.toString(), 0, (long)fileLen); assertEquals("Should only find 1 block", blocks.locatedBlockCount(), 1);
private boolean isDTRunning(NameNode nn) { return NameNodeAdapter.getDtSecretManager(nn.getNamesystem()).isRunning(); }
/** * Return the {@link FSNamesystem} object. * @return {@link FSNamesystem} object. */ public FSNamesystem getNamesystem() { return NameNodeAdapter.getNamesystem(nameNode); }
/** * Restart the cluster, optionally saving a new checkpoint. * * @param checkpoint boolean true to save a new checkpoint * @throws Exception if restart fails */ protected static void restart(boolean checkpoint) throws Exception { NameNode nameNode = dfsCluster.getNameNode(); if (checkpoint) { NameNodeAdapter.enterSafeMode(nameNode, false); NameNodeAdapter.saveNamespace(nameNode); } shutdown(); initCluster(false); } }
/** * Regression test for a bug experienced while developing * HDFS-2742. The scenario here is: * - image contains some blocks * - edits log contains at least one block addition, followed * by deletion of more blocks than were added. * - When node starts up, some incorrect accounting of block * totals caused an assertion failure. */ @Test public void testBlocksDeletedInEditLog() throws Exception { banner("Starting with NN0 active and NN1 standby, creating some blocks"); // Make 4 blocks persisted in the image. DFSTestUtil.createFile(fs, new Path("/test"), 4*BLOCK_SIZE, (short) 3, 1L); NameNodeAdapter.enterSafeMode(nn0, false); NameNodeAdapter.saveNamespace(nn0); NameNodeAdapter.leaveSafeMode(nn0); // OP_ADD for 2 blocks DFSTestUtil.createFile(fs, new Path("/test2"), 2*BLOCK_SIZE, (short) 3, 1L); // OP_DELETE for 4 blocks fs.delete(new Path("/test"), true); restartActive(); }
final Path test = new Path("/test"); NameNodeAdapter.enterSafeMode(nn0, false); SafeModeInfo safeMode = (SafeModeInfo) Whitebox.getInternalState( nn0.getNamesystem(), "safeMode"); NameNodeAdapter.leaveSafeMode(nn0); LOG.info("leave safemode");
FSNamesystem fsn = NameNodeAdapter.getNamesystem(nn); BlockManager bm = fsn.getBlockManager(); LocatedBlocks oldBlocks = NameNodeAdapter.getBlockLocations( nn, file, 0, fileSize); assertBlocks(bm, oldBlocks, true); LocatedBlocks newBlocks = NameNodeAdapter.getBlockLocations( nn, file, 0, fileSize); assertBlocks(bm, newBlocks, true); NameNodeAdapter.enterSafeMode(nn, false); NameNodeAdapter.saveNamespace(nn); cluster.restartNameNode(); nn = cluster.getNameNode();
nn0.getRpcServer().rollEditLog(); NameNodeAdapter.enterSafeMode(nn0, false); NameNodeAdapter.saveNamespace(nn0); NameNodeAdapter.leaveSafeMode(nn0); long expectedCheckpointTxId = NameNodeAdapter.getNamesystem(nn0) .getFSImage().getMostRecentCheckpointTxId(); assertEquals(6, expectedCheckpointTxId);
assertTrue(nn.isInSafeMode()); DelegationTokenSecretManager sm = NameNodeAdapter.getDtSecretManager(nn.getNamesystem()); assertFalse("Secret manager should not run in safe mode", sm.isRunning()); NameNodeAdapter.leaveSafeMode(nn); assertTrue("Secret manager should start when safe mode is exited", sm.isRunning()); NameNodeAdapter.enterSafeMode(nn, false); assertFalse("Secret manager should stop again when safe mode " + "is manually entered", sm.isRunning()); cluster.restartNameNode(); nn = cluster.getNameNode(); sm = NameNodeAdapter.getDtSecretManager(nn.getNamesystem());
DFSTestUtil.createFile(dfs, dstPath, fileLen, replFactor, 1); LocatedBlocks lbs = NameNodeAdapter.getBlockLocations( cluster.getNameNode(), dst, 0, fileLen); BlockManager bm = NameNodeAdapter.getNamesystem(cluster.getNameNode()). getBlockManager(); assertTrue(bm.getStoredBlock(lbs.getLocatedBlocks().get(0).getBlock().
DatanodeInfo[] lastBlockLocations = NameNodeAdapter.getBlockLocations( cluster.getNameNode(), "/testRecoveryDecommission", 0, fileSize) .getLastLocatedBlock().getLocations(); DatanodeInfo datanode = NameNodeAdapter.getDatanode( cluster.getNamesystem(), dnDecom); waitNodeState(datanode, AdminStates.DECOMMISSIONED);
NameNodeAdapter.abortEditLogs(nn1); NameNodeAdapter.enterSafeMode(nn1, false); cluster.transitionToActive(1);
/** * Expire a DataNode heartbeat on the NameNode * @param dnId * @throws IOException */ public void setDataNodeDead(DatanodeID dnId) throws IOException { DatanodeDescriptor dnd = NameNodeAdapter.getDatanode(getNamesystem(), dnId); DFSTestUtil.setDatanodeDead(dnd); BlockManagerTestUtil.checkHeartbeat(getNamesystem().getBlockManager()); }
final DatanodeRegistration nodeReg1 = DataNodeTestUtils.getDNRegistrationForBP(cluster.getDataNodes().get(0), poolId); final DatanodeDescriptor dd1 = NameNodeAdapter.getDatanode(namesystem, nodeReg1); dd1.updateStorage(new DatanodeStorage(DatanodeStorage.generateUuid())); final DatanodeRegistration nodeReg2 = DataNodeTestUtils.getDNRegistrationForBP(cluster.getDataNodes().get(1), poolId); final DatanodeDescriptor dd2 = NameNodeAdapter.getDatanode(namesystem, nodeReg2); dd2.updateStorage(new DatanodeStorage(DatanodeStorage.generateUuid())); final DatanodeRegistration nodeReg3 = DataNodeTestUtils.getDNRegistrationForBP(cluster.getDataNodes().get(2), poolId); final DatanodeDescriptor dd3 = NameNodeAdapter.getDatanode(namesystem, nodeReg3); dd3.updateStorage(new DatanodeStorage(DatanodeStorage.generateUuid())); namesystem.writeLock(); synchronized(hm) { NameNodeAdapter.sendHeartBeat(nodeReg1, dd1, namesystem); NameNodeAdapter.sendHeartBeat(nodeReg2, dd2, namesystem); NameNodeAdapter.sendHeartBeat(nodeReg3, dd3, namesystem); dd1.addBlockToBeRecovered(blockInfo); DatanodeCommand[] cmds = NameNodeAdapter.sendHeartBeat(nodeReg1, dd1, namesystem).getCommands(); assertEquals(1, cmds.length); assertEquals(DatanodeProtocol.DNA_RECOVERBLOCK, cmds[0].getAction()); BlockUCState.UNDER_RECOVERY, storages); dd1.addBlockToBeRecovered(blockInfo); cmds = NameNodeAdapter.sendHeartBeat(nodeReg1, dd1, namesystem).getCommands(); assertEquals(1, cmds.length);
try { for (int i = 0; i < DIRS_TO_MAKE / 2; i++) { NameNodeAdapter.mkdirs(nn1, getDirPath(i), new PermissionStatus("test","test", new FsPermission((short)00755)), true); assertTrue(NameNodeAdapter.getFileInfo(nn2, getDirPath(i), false).isDir()); NameNodeAdapter.mkdirs(nn1, getDirPath(i), new PermissionStatus("test","test", new FsPermission((short)00755)), true); assertTrue(NameNodeAdapter.getFileInfo(nn2, getDirPath(i), false).isDir());
NameNodeAdapter.getLeaseManager(cluster.getNamesystem()) .setLeasePeriod(LOW_SOFTLIMIT, LOW_HARDLIMIT); for(int i = 0; i < RECOVERY_ATTEMPTS; i++) { String leaseHolder = NameNodeAdapter.getLeaseHolderForPath(cluster.getNameNode(), p.toUri().getPath()); if(leaseHolder.equals(HdfsServerConstants.NAMENODE_LEASE_HOLDER)) { NameNodeAdapter.getLeaseManager(cluster.getNamesystem()) .setLeasePeriod(HdfsConstants.LEASE_SOFTLIMIT_PERIOD, HdfsConstants.LEASE_HARDLIMIT_PERIOD);
@Test public void testTryFailoverToSafeMode() throws Exception { conf.set(DFSConfigKeys.DFS_HA_FENCE_METHODS_KEY, TestDFSHAAdmin.getFencerTrueCommand()); tool.setConf(conf); NameNodeAdapter.enterSafeMode(cluster.getNameNode(0), false); assertEquals(-1, runTool("-failover", "nn2", "nn1")); assertTrue("Bad output: " + errOutput, errOutput.contains("is not ready to become active: " + "The NameNode is in safemode")); }
assertNull(NameNodeAdapter.getFileInfo(nn1, TEST_DIR1, false)); assertTrue(NameNodeAdapter.getFileInfo(nn1, TEST_DIR2, false).isDir()); assertNull(NameNodeAdapter.getFileInfo(nn1, TEST_DIR3, false)); assertNull(NameNodeAdapter.getFileInfo(nn1, TEST_DIR1, false)); assertTrue(NameNodeAdapter.getFileInfo(nn1, TEST_DIR2, false).isDir()); assertTrue(NameNodeAdapter.getFileInfo(nn1, TEST_DIR3, false).isDir());
public static void writeOp(EditLogOutputStream stm, long txid) throws IOException { FSEditLogOp op = NameNodeAdapter.createMkdirOp("tx " + txid); op.setTransactionId(txid); stm.write(op); }
static void checkLease(String f, int size) { final String holder = NameNodeAdapter.getLeaseHolderForPath( cluster.getNameNode(), f); if (size == 0) { assertEquals("lease holder should null, file is closed", null, holder); } else { assertEquals("lease holder should now be the NN", HdfsServerConstants.NAMENODE_LEASE_HOLDER, holder); } } }