Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeDirectoryWithSnapshot.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeDirectoryWithSnapshot.java?rev=1568201&r1=1568200&r2=1568201&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeDirectoryWithSnapshot.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeDirectoryWithSnapshot.java Fri Feb 14 06:59:06 2014 @@ -38,7 +38,6 @@ import org.apache.hadoop.hdfs.server.nam import org.apache.hadoop.hdfs.server.namenode.INodeDirectory; import org.apache.hadoop.hdfs.server.namenode.INodeDirectoryAttributes; import org.apache.hadoop.hdfs.server.namenode.INodeDirectoryWithQuota; -import org.apache.hadoop.hdfs.server.namenode.INodeFile; import org.apache.hadoop.hdfs.server.namenode.INodeMap; import org.apache.hadoop.hdfs.server.namenode.INodeReference; import org.apache.hadoop.hdfs.server.namenode.Quota; @@ -590,14 +589,6 @@ public class INodeDirectoryWithSnapshot } @Override - public void replaceChildFileInSnapshot(final INodeFile oldChild, - final INodeFile newChild) { - super.replaceChildFileInSnapshot(oldChild, newChild); - diffs.replaceChild(ListType.DELETED, oldChild, newChild); - diffs.replaceChild(ListType.CREATED, oldChild, newChild); - } - - @Override public void replaceChild(final INode oldChild, final INode newChild, final INodeMap inodeMap) { super.replaceChild(oldChild, newChild, inodeMap);
Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeFileUnderConstructionWithSnapshot.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeFileUnderConstructionWithSnapshot.java?rev=1568201&r1=1568200&r2=1568201&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeFileUnderConstructionWithSnapshot.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeFileUnderConstructionWithSnapshot.java Fri Feb 14 06:59:06 2014 @@ -1,130 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.hadoop.hdfs.server.namenode.snapshot; - -import java.util.List; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.hdfs.protocol.QuotaExceededException; -import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor; -import org.apache.hadoop.hdfs.server.namenode.INode; -import org.apache.hadoop.hdfs.server.namenode.INodeFile; -import org.apache.hadoop.hdfs.server.namenode.INodeFileAttributes; -import org.apache.hadoop.hdfs.server.namenode.INodeFileUnderConstruction; -import org.apache.hadoop.hdfs.server.namenode.INodeMap; -import org.apache.hadoop.hdfs.server.namenode.Quota; - -/** - * Represent an {@link INodeFileUnderConstruction} that is snapshotted. - */ -@InterfaceAudience.Private -public class INodeFileUnderConstructionWithSnapshot - extends INodeFileUnderConstruction implements FileWithSnapshot { - private final FileDiffList diffs; - private boolean isCurrentFileDeleted = false; - - INodeFileUnderConstructionWithSnapshot(final INodeFile f, - final String clientName, - final String clientMachine, - final DatanodeDescriptor clientNode, - final FileDiffList diffs) { - super(f, clientName, clientMachine, clientNode); - this.diffs = diffs != null? diffs: new FileDiffList(); - } - - /** - * Construct an {@link INodeFileUnderConstructionWithSnapshot} based on an - * {@link INodeFileUnderConstruction}. - * - * @param f The given {@link INodeFileUnderConstruction} instance - */ - public INodeFileUnderConstructionWithSnapshot(INodeFileUnderConstruction f, - final FileDiffList diffs) { - this(f, f.getClientName(), f.getClientMachine(), f.getClientNode(), diffs); - } - - @Override - protected INodeFileWithSnapshot toINodeFile(final long mtime) { - assertAllBlocksComplete(); - final long atime = getModificationTime(); - final INodeFileWithSnapshot f = new INodeFileWithSnapshot(this, getDiffs()); - f.setModificationTime(mtime); - f.setAccessTime(atime); - return f; - } - - @Override - public boolean isCurrentFileDeleted() { - return isCurrentFileDeleted; - } - - @Override - public void deleteCurrentFile() { - isCurrentFileDeleted = true; - } - - @Override - public INodeFileAttributes getSnapshotINode(Snapshot snapshot) { - return diffs.getSnapshotINode(snapshot, this); - } - - @Override - public INodeFileUnderConstructionWithSnapshot recordModification( - final Snapshot latest, final INodeMap inodeMap) - throws QuotaExceededException { - if (isInLatestSnapshot(latest) && !shouldRecordInSrcSnapshot(latest)) { - diffs.saveSelf2Snapshot(latest, this, null); - } - return this; - } - - @Override - public INodeFile asINodeFile() { - return this; - } - - @Override - public FileDiffList getDiffs() { - return diffs; - } - - @Override - public Quota.Counts cleanSubtree(final Snapshot snapshot, Snapshot prior, - final BlocksMapUpdateInfo collectedBlocks, - final List<INode> removedINodes, final boolean countDiffChange) - throws QuotaExceededException { - if (snapshot == null) { // delete the current file - if (!isCurrentFileDeleted()) { - recordModification(prior, null); - deleteCurrentFile(); - } - Util.collectBlocksAndClear(this, collectedBlocks, removedINodes); - return Quota.Counts.newInstance(); - } else { // delete a snapshot - prior = getDiffs().updatePrior(snapshot, prior); - return diffs.deleteSnapshotDiff(snapshot, prior, this, collectedBlocks, - removedINodes, countDiffChange); - } - } - - @Override - public String toDetailString() { - return super.toDetailString() - + (isCurrentFileDeleted()? " (DELETED), ": ", ") + diffs; - } -} Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeFileWithSnapshot.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeFileWithSnapshot.java?rev=1568201&r1=1568200&r2=1568201&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeFileWithSnapshot.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/INodeFileWithSnapshot.java Fri Feb 14 06:59:06 2014 @@ -21,7 +21,6 @@ import java.util.List; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.hdfs.protocol.QuotaExceededException; -import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor; import org.apache.hadoop.hdfs.server.namenode.INode; import org.apache.hadoop.hdfs.server.namenode.INodeFile; import org.apache.hadoop.hdfs.server.namenode.INodeFileAttributes; @@ -48,15 +47,6 @@ public class INodeFileWithSnapshot exten } @Override - public INodeFileUnderConstructionWithSnapshot toUnderConstruction( - final String clientName, - final String clientMachine, - final DatanodeDescriptor clientNode) { - return new INodeFileUnderConstructionWithSnapshot(this, - clientName, clientMachine, clientNode, getDiffs()); - } - - @Override public boolean isCurrentFileDeleted() { return isCurrentFileDeleted; } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/CreateEditsLog.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/CreateEditsLog.java?rev=1568201&r1=1568200&r2=1568201&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/CreateEditsLog.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/CreateEditsLog.java Fri Feb 14 06:59:06 2014 @@ -82,9 +82,10 @@ public class CreateEditsLog { blocks[iB].setBlockId(currentBlockId++); } - INodeFileUnderConstruction inode = new INodeFileUnderConstruction( - inodeId.nextValue(), null, replication, 0, blockSize, blocks, p, "", - "", null); + final INodeFile inode = new INodeFile(inodeId.nextValue(), null, + p, 0L, 0L, blocks, replication, blockSize); + inode.toUnderConstruction("", "", null); + // Append path to filename with information about blockIDs String path = "_" + iF + "_B" + blocks[0].getBlockId() + "_to_B" + blocks[blocksPerFile-1].getBlockId() + "_"; @@ -96,9 +97,10 @@ public class CreateEditsLog { dirInode = new INodeDirectory(inodeId.nextValue(), null, p, 0L); editLog.logMkDir(currentDir, dirInode); } - editLog.logOpenFile(filePath, - new INodeFileUnderConstruction(inodeId.nextValue(), p, replication, - 0, blockSize, "", "", null), false); + INodeFile fileUc = new INodeFile(inodeId.nextValue(), null, + p, 0L, 0L, BlockInfo.EMPTY_ARRAY, replication, blockSize); + fileUc.toUnderConstruction("", "", null); + editLog.logOpenFile(filePath, fileUc, false); editLog.logCloseFile(filePath, inode); if (currentBlockId - bidAtSync >= 2000) { // sync every 2K blocks Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java?rev=1568201&r1=1568200&r2=1568201&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java Fri Feb 14 06:59:06 2014 @@ -43,8 +43,7 @@ public class TestCommitBlockSynchronizat private static final long length = 200; private static final long genStamp = 300; - private FSNamesystem makeNameSystemSpy(Block block, - INodeFileUnderConstruction file) + private FSNamesystem makeNameSystemSpy(Block block, INodeFile file) throws IOException { Configuration conf = new Configuration(); FSImage image = new FSImage(conf); @@ -58,21 +57,26 @@ public class TestCommitBlockSynchronizat blockInfo.setGenerationStamp(genStamp); blockInfo.initializeBlockRecovery(genStamp); doReturn(true).when(file).removeLastBlock(any(Block.class)); + doReturn(true).when(file).isUnderConstruction(); doReturn(blockInfo).when(namesystemSpy).getStoredBlock(any(Block.class)); doReturn("").when(namesystemSpy).closeFileCommitBlocks( - any(INodeFileUnderConstruction.class), - any(BlockInfo.class)); + any(INodeFile.class), any(BlockInfo.class)); doReturn("").when(namesystemSpy).persistBlocks( - any(INodeFileUnderConstruction.class), anyBoolean()); + any(INodeFile.class), anyBoolean()); doReturn(mock(FSEditLog.class)).when(namesystemSpy).getEditLog(); return namesystemSpy; } + private INodeFile mockFileUnderConstruction() { + INodeFile file = mock(INodeFile.class); + return file; + } + @Test public void testCommitBlockSynchronization() throws IOException { - INodeFileUnderConstruction file = mock(INodeFileUnderConstruction.class); + INodeFile file = mockFileUnderConstruction(); Block block = new Block(blockId, length, genStamp); FSNamesystem namesystemSpy = makeNameSystemSpy(block, file); DatanodeID[] newTargets = new DatanodeID[0]; @@ -100,7 +104,7 @@ public class TestCommitBlockSynchronizat @Test public void testCommitBlockSynchronization2() throws IOException { - INodeFileUnderConstruction file = mock(INodeFileUnderConstruction.class); + INodeFile file = mockFileUnderConstruction(); Block block = new Block(blockId, length, genStamp); FSNamesystem namesystemSpy = makeNameSystemSpy(block, file); DatanodeID[] newTargets = new DatanodeID[0]; @@ -124,7 +128,7 @@ public class TestCommitBlockSynchronizat @Test public void testCommitBlockSynchronizationWithDelete() throws IOException { - INodeFileUnderConstruction file = mock(INodeFileUnderConstruction.class); + INodeFile file = mockFileUnderConstruction(); Block block = new Block(blockId, length, genStamp); FSNamesystem namesystemSpy = makeNameSystemSpy(block, file); DatanodeID[] newTargets = new DatanodeID[0]; @@ -144,7 +148,7 @@ public class TestCommitBlockSynchronizat @Test public void testCommitBlockSynchronizationWithClose() throws IOException { - INodeFileUnderConstruction file = mock(INodeFileUnderConstruction.class); + INodeFile file = mockFileUnderConstruction(); Block block = new Block(blockId, length, genStamp); FSNamesystem namesystemSpy = makeNameSystemSpy(block, file); DatanodeID[] newTargets = new DatanodeID[0]; @@ -171,7 +175,7 @@ public class TestCommitBlockSynchronizat @Test public void testCommitBlockSynchronizationWithCloseAndNonExistantTarget() throws IOException { - INodeFileUnderConstruction file = mock(INodeFileUnderConstruction.class); + INodeFile file = mockFileUnderConstruction(); Block block = new Block(blockId, length, genStamp); FSNamesystem namesystemSpy = makeNameSystemSpy(block, file); DatanodeID[] newTargets = new DatanodeID[]{ Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestEditLog.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestEditLog.java?rev=1568201&r1=1568200&r2=1568201&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestEditLog.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestEditLog.java Fri Feb 14 06:59:06 2014 @@ -63,6 +63,7 @@ import org.apache.hadoop.hdfs.HdfsConfig import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.hdfs.protocol.HdfsFileStatus; +import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfo; import org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory; import org.apache.hadoop.hdfs.server.namenode.NNStorage.NameNodeDirType; import org.apache.hadoop.hdfs.server.namenode.metrics.NameNodeMetrics; @@ -152,9 +153,10 @@ public class TestEditLog { FSEditLog editLog = namesystem.getEditLog(); for (int i = 0; i < numTransactions; i++) { - INodeFileUnderConstruction inode = new INodeFileUnderConstruction( - namesystem.allocateNewInodeId(), p, replication, blockSize, 0, "", - "", null); + INodeFile inode = new INodeFile(namesystem.allocateNewInodeId(), null, + p, 0L, 0L, BlockInfo.EMPTY_ARRAY, replication, blockSize); + inode.toUnderConstruction("", "", null); + editLog.logOpenFile("/filename" + (startIndex + i), inode, false); editLog.logCloseFile("/filename" + (startIndex + i), inode); editLog.logSync(); Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestINodeFile.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestINodeFile.java?rev=1568201&r1=1568200&r2=1568201&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestINodeFile.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestINodeFile.java Fri Feb 14 06:59:06 2014 @@ -29,6 +29,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import junit.framework.Assert; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; @@ -59,6 +61,7 @@ import org.apache.hadoop.hdfs.protocol.L import org.apache.hadoop.hdfs.protocol.QuotaExceededException; import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfo; import org.apache.hadoop.hdfs.server.protocol.NamenodeProtocols; +import org.apache.hadoop.util.Time; import org.junit.Test; import org.mockito.Mockito; @@ -286,14 +289,6 @@ public class TestINodeFile { assertTrue(fnfe.getMessage().contains("File does not exist")); } - //cast to INodeFileUnderConstruction, should fail - try { - INodeFileUnderConstruction.valueOf(from, path); - fail(); - } catch(FileNotFoundException fnfe) { - assertTrue(fnfe.getMessage().contains("File does not exist")); - } - //cast to INodeDirectory, should fail try { INodeDirectory.valueOf(from, path); @@ -310,14 +305,6 @@ public class TestINodeFile { final INodeFile f = INodeFile.valueOf(from, path); assertTrue(f == from); - //cast to INodeFileUnderConstruction, should fail - try { - INodeFileUnderConstruction.valueOf(from, path); - fail(); - } catch(IOException ioe) { - assertTrue(ioe.getMessage().contains("File is not under construction")); - } - //cast to INodeDirectory, should fail try { INodeDirectory.valueOf(from, path); @@ -328,19 +315,14 @@ public class TestINodeFile { } {//cast from INodeFileUnderConstruction - final INode from = new INodeFileUnderConstruction( - INodeId.GRANDFATHER_INODE_ID, perm, replication, 0L, 0L, "client", - "machine", null); + final INode from = new INodeFile( + INodeId.GRANDFATHER_INODE_ID, null, perm, 0L, 0L, null, replication, 1024L); + from.asFile().toUnderConstruction("client", "machine", null); //cast to INodeFile, should success final INodeFile f = INodeFile.valueOf(from, path); assertTrue(f == from); - //cast to INodeFileUnderConstruction, should success - final INodeFileUnderConstruction u = INodeFileUnderConstruction.valueOf( - from, path); - assertTrue(u == from); - //cast to INodeDirectory, should fail try { INodeDirectory.valueOf(from, path); @@ -362,14 +344,6 @@ public class TestINodeFile { assertTrue(fnfe.getMessage().contains("Path is not a file")); } - //cast to INodeFileUnderConstruction, should fail - try { - INodeFileUnderConstruction.valueOf(from, path); - fail(); - } catch(FileNotFoundException fnfe) { - assertTrue(fnfe.getMessage().contains("Path is not a file")); - } - //cast to INodeDirectory, should success final INodeDirectory d = INodeDirectory.valueOf(from, path); assertTrue(d == from); @@ -1047,4 +1021,24 @@ public class TestINodeFile { } } } + + @Test + public void testFileUnderConstruction() { + replication = 3; + final INodeFile file = new INodeFile(INodeId.GRANDFATHER_INODE_ID, null, + perm, 0L, 0L, null, replication, 1024L); + assertFalse(file.isUnderConstruction()); + + final String clientName = "client"; + final String clientMachine = "machine"; + file.toUnderConstruction(clientName, clientMachine, null); + assertTrue(file.isUnderConstruction()); + FileUnderConstructionFeature uc = file.getFileUnderConstructionFeature(); + assertEquals(clientName, uc.getClientName()); + assertEquals(clientMachine, uc.getClientMachine()); + Assert.assertNull(uc.getClientNode()); + + file.toCompleteFile(Time.now()); + assertFalse(file.isUnderConstruction()); + } } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestRetryCacheWithHA.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestRetryCacheWithHA.java?rev=1568201&r1=1568200&r2=1568201&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestRetryCacheWithHA.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestRetryCacheWithHA.java Fri Feb 14 06:59:06 2014 @@ -69,7 +69,6 @@ import org.apache.hadoop.hdfs.protocol.C import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfoUnderConstruction; import org.apache.hadoop.hdfs.server.namenode.FSNamesystem; import org.apache.hadoop.hdfs.server.namenode.INodeFile; -import org.apache.hadoop.hdfs.server.namenode.INodeFileUnderConstruction; import org.apache.hadoop.hdfs.server.namenode.snapshot.SnapshotTestHelper; import org.apache.hadoop.io.EnumSetWritable; import org.apache.hadoop.io.IOUtils; @@ -726,8 +725,8 @@ public class TestRetryCacheWithHA { @Override boolean checkNamenodeBeforeReturn() throws Exception { - INodeFileUnderConstruction fileNode = (INodeFileUnderConstruction) cluster - .getNamesystem(0).getFSDirectory().getINode4Write(file).asFile(); + INodeFile fileNode = cluster.getNamesystem(0).getFSDirectory() + .getINode4Write(file).asFile(); BlockInfoUnderConstruction blkUC = (BlockInfoUnderConstruction) (fileNode.getBlocks())[1]; int datanodeNum = blkUC.getExpectedStorageLocations().length; Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestRenameWithSnapshots.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestRenameWithSnapshots.java?rev=1568201&r1=1568200&r2=1568201&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestRenameWithSnapshots.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestRenameWithSnapshots.java Fri Feb 14 06:59:06 2014 @@ -1227,8 +1227,9 @@ public class TestRenameWithSnapshots { out.write(content); fooRef = fsdir.getINode4Write(foo2.toString()); assertTrue(fooRef instanceof INodeReference.DstReference); - INode fooNode = fooRef.asFile(); - assertTrue(fooNode instanceof INodeFileUnderConstructionWithSnapshot); + INodeFile fooNode = fooRef.asFile(); + assertTrue(fooNode instanceof INodeFileWithSnapshot); + assertTrue(fooNode.isUnderConstruction()); } finally { if (out != null) { out.close(); @@ -1237,8 +1238,9 @@ public class TestRenameWithSnapshots { fooRef = fsdir.getINode4Write(foo2.toString()); assertTrue(fooRef instanceof INodeReference.DstReference); - INode fooNode = fooRef.asFile(); + INodeFile fooNode = fooRef.asFile(); assertTrue(fooNode instanceof INodeFileWithSnapshot); + assertFalse(fooNode.isUnderConstruction()); restartClusterAndCheckImage(true); } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotBlocksMap.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotBlocksMap.java?rev=1568201&r1=1568200&r2=1568201&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotBlocksMap.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestSnapshotBlocksMap.java Fri Feb 14 06:59:06 2014 @@ -314,7 +314,9 @@ public class TestSnapshotBlocksMap { assertEquals(BLOCKSIZE, blks[0].getNumBytes()); } - /** Make sure we delete 0-sized block when deleting an INodeFileUC */ + /** + * Make sure we delete 0-sized block when deleting an under-construction file + */ @Test public void testDeletionWithZeroSizeBlock2() throws Exception { final Path foo = new Path("/foo");