Return-Path: X-Original-To: apmail-hadoop-hdfs-commits-archive@minotaur.apache.org Delivered-To: apmail-hadoop-hdfs-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CA97CDAB2 for ; Sat, 3 Nov 2012 00:28:10 +0000 (UTC) Received: (qmail 23114 invoked by uid 500); 3 Nov 2012 00:28:10 -0000 Delivered-To: apmail-hadoop-hdfs-commits-archive@hadoop.apache.org Received: (qmail 22994 invoked by uid 500); 3 Nov 2012 00:28:10 -0000 Mailing-List: contact hdfs-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hdfs-dev@hadoop.apache.org Delivered-To: mailing list hdfs-commits@hadoop.apache.org Received: (qmail 22985 invoked by uid 99); 3 Nov 2012 00:28:10 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 03 Nov 2012 00:28:10 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 03 Nov 2012 00:28:05 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id EB153238897F; Sat, 3 Nov 2012 00:27:43 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1405241 - in /hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs: ./ src/main/java/ src/main/java/org/apache/hadoop/hdfs/server/namenode/ src/test/java/org/apache/hadoop/hdfs/server/namenode/ Date: Sat, 03 Nov 2012 00:27:43 -0000 To: hdfs-commits@hadoop.apache.org From: szetszwo@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121103002743.EB153238897F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: szetszwo Date: Sat Nov 3 00:27:42 2012 New Revision: 1405241 URL: http://svn.apache.org/viewvc?rev=1405241&view=rev Log: svn merge -c 1405237 from trunk for HDFS-4143. Change blocks to private in INodeFile and renames isLink() to isSymlink() in INode. Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/ (props changed) hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/ (props changed) hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFile.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFileUnderConstruction.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeSymlink.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java Propchange: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs:r1405237 Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1405241&r1=1405240&r2=1405241&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Sat Nov 3 00:27:42 2012 @@ -103,6 +103,9 @@ Release 2.0.3-alpha - Unreleased HDFS-3916. libwebhdfs testing code cleanup. (Jing Zhao via suresh) + HDFS-4143. Change blocks to private in INodeFile and renames isLink() to + isSymlink() in INode. (szetszwo) + OPTIMIZATIONS BUG FIXES Propchange: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java:r1405237 Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.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/FSDirectory.java?rev=1405241&r1=1405240&r2=1405241&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java Sat Nov 3 00:27:42 2012 @@ -312,7 +312,7 @@ public class FSDirectory implements Clos } if(newParent == null) return null; - if(!newNode.isDirectory() && !newNode.isLink()) { + if(!newNode.isDirectory() && !newNode.isSymlink()) { // Add file->block mapping INodeFile newF = (INodeFile)newNode; BlockInfo[] blocks = newF.getBlocks(); @@ -532,7 +532,7 @@ public class FSDirectory implements Clos if (dst.equals(src)) { return true; } - if (srcInode.isLink() && + if (srcInode.isSymlink() && dst.equals(((INodeSymlink)srcInode).getLinkValue())) { throw new FileAlreadyExistsException( "Cannot rename symlink "+src+" to its target "+dst); @@ -653,7 +653,7 @@ public class FSDirectory implements Clos throw new FileAlreadyExistsException( "The source "+src+" and destination "+dst+" are the same"); } - if (srcInode.isLink() && + if (srcInode.isSymlink() && dst.equals(((INodeSymlink)srcInode).getLinkValue())) { throw new FileAlreadyExistsException( "Cannot rename symlink "+src+" to its target "+dst); @@ -816,7 +816,7 @@ public class FSDirectory implements Clos if (inode == null) { return null; } - assert !inode.isLink(); + assert !inode.isSymlink(); if (inode.isDirectory()) { return null; } @@ -848,7 +848,7 @@ public class FSDirectory implements Clos if (inode == null) { throw new FileNotFoundException("File does not exist: " + filename); } - if (inode.isDirectory() || inode.isLink()) { + if (inode.isDirectory() || inode.isSymlink()) { throw new IOException("Getting block size of non-file: "+ filename); } return ((INodeFile)inode).getPreferredBlockSize(); @@ -865,7 +865,7 @@ public class FSDirectory implements Clos if (inode == null) { return false; } - return inode.isDirectory() || inode.isLink() + return inode.isDirectory() || inode.isSymlink() ? true : ((INodeFile)inode).getBlocks() != null; } finally { @@ -965,7 +965,7 @@ public class FSDirectory implements Clos for(String src : srcs) { INodeFile srcInode = (INodeFile)getINode(src); allSrcInodes[i++] = srcInode; - totalBlocks += srcInode.blocks.length; + totalBlocks += srcInode.numBlocks(); } trgInode.appendBlocks(allSrcInodes, totalBlocks); // copy the blocks @@ -974,7 +974,7 @@ public class FSDirectory implements Clos for(INodeFile nodeToRemove: allSrcInodes) { if(nodeToRemove == null) continue; - nodeToRemove.blocks = null; + nodeToRemove.setBlocks(null); trgParent.removeChild(nodeToRemove); count++; } @@ -1205,7 +1205,7 @@ public class FSDirectory implements Clos return null; if (targetNode.isDirectory()) return null; - if (targetNode.isLink()) + if (targetNode.isSymlink()) return null; return ((INodeFile)targetNode).getBlocks(); } finally { @@ -1819,7 +1819,7 @@ public class FSDirectory implements Clos if (child.isDirectory()) { updateCountForINodeWithQuota((INodeDirectory)child, counts, nodesInPath); - } else if (child.isLink()) { + } else if (child.isSymlink()) { counts.nsCount += 1; } else { // reduce recursive calls counts.nsCount += 1; @@ -2048,7 +2048,7 @@ public class FSDirectory implements Clos node.getFsPermission(), node.getUserName(), node.getGroupName(), - node.isLink() ? ((INodeSymlink)node).getSymlink() : null, + node.isSymlink() ? ((INodeSymlink)node).getSymlink() : null, path); } @@ -2084,7 +2084,7 @@ public class FSDirectory implements Clos node.getFsPermission(), node.getUserName(), node.getGroupName(), - node.isLink() ? ((INodeSymlink)node).getSymlink() : null, + node.isSymlink() ? ((INodeSymlink)node).getSymlink() : null, path, loc); } @@ -2155,7 +2155,7 @@ public class FSDirectory implements Clos */ void cacheName(INode inode) { // Name is cached only for files - if (inode.isDirectory() || inode.isLink()) { + if (inode.isDirectory() || inode.isSymlink()) { return; } ByteArray name = new ByteArray(inode.getLocalNameBytes()); Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.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/FSImageSerialization.java?rev=1405241&r1=1405240&r2=1405241&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java Sat Nov 3 00:27:42 2012 @@ -162,7 +162,7 @@ public class FSImageSerialization { PermissionStatus.write(out, node.getUserName(), node.getGroupName(), filePerm); - } else if (node.isLink()) { + } else if (node.isSymlink()) { out.writeShort(0); // replication out.writeLong(0); // modification time out.writeLong(0); // access time Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.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/FSNamesystem.java?rev=1405241&r1=1405240&r2=1405241&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Sat Nov 3 00:27:42 2012 @@ -1375,7 +1375,7 @@ public class FSNamesystem implements Nam + target + " is under construction"); } // per design target shouldn't be empty and all the blocks same size - if(trgInode.blocks.length == 0) { + if(trgInode.numBlocks() == 0) { throw new HadoopIllegalArgumentException("concat: target file " + target + " is empty"); } @@ -1383,10 +1383,10 @@ public class FSNamesystem implements Nam long blockSize = trgInode.getPreferredBlockSize(); // check the end block to be full - if(blockSize != trgInode.blocks[trgInode.blocks.length-1].getNumBytes()) { + final BlockInfo last = trgInode.getLastBlock(); + if(blockSize != last.getNumBytes()) { throw new HadoopIllegalArgumentException("The last block in " + target - + " is not full; last block size = " - + trgInode.blocks[trgInode.blocks.length-1].getNumBytes() + + " is not full; last block size = " + last.getNumBytes() + " but file block size = " + blockSize); } @@ -1403,7 +1403,7 @@ public class FSNamesystem implements Nam final INodeFile srcInode = INodeFile.valueOf(dir.getINode(src), src); if(src.isEmpty() || srcInode.isUnderConstruction() - || srcInode.blocks.length == 0) { + || srcInode.numBlocks() == 0) { throw new HadoopIllegalArgumentException("concat: source file " + src + " is invalid or empty or underConstruction"); } @@ -1420,15 +1420,16 @@ public class FSNamesystem implements Nam //boolean endBlock=false; // verify that all the blocks are of the same length as target // should be enough to check the end blocks - int idx = srcInode.blocks.length-1; + final BlockInfo[] srcBlocks = srcInode.getBlocks(); + int idx = srcBlocks.length-1; if(endSrc) - idx = srcInode.blocks.length-2; // end block of endSrc is OK not to be full - if(idx >= 0 && srcInode.blocks[idx].getNumBytes() != blockSize) { + idx = srcBlocks.length-2; // end block of endSrc is OK not to be full + if(idx >= 0 && srcBlocks[idx].getNumBytes() != blockSize) { throw new HadoopIllegalArgumentException("concat: the soruce file " + src + " and the target file " + target + " should have the same blocks sizes: target block size is " + blockSize + " but the size of source block " + idx + " is " - + srcInode.blocks[idx].getNumBytes()); + + srcBlocks[idx].getNumBytes()); } si.add(srcInode); @@ -1663,7 +1664,7 @@ public class FSNamesystem implements Nam if (parentNode == null) { throw new FileNotFoundException("Parent directory doesn't exist: " + parent.toString()); - } else if (!parentNode.isDirectory() && !parentNode.isLink()) { + } else if (!parentNode.isDirectory() && !parentNode.isSymlink()) { throw new ParentNotDirectoryException("Parent path is not a directory: " + parent.toString()); } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.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/INode.java?rev=1405241&r1=1405240&r2=1405241&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java Sat Nov 3 00:27:42 2012 @@ -180,7 +180,9 @@ abstract class INode implements Comparab /** * Check whether it's a directory */ - abstract boolean isDirectory(); + public boolean isDirectory() { + return false; + } /** * Collect all the blocks in all children of this INode. @@ -330,7 +332,7 @@ abstract class INode implements Comparab /** * Check whether it's a symlink */ - public boolean isLink() { + public boolean isSymlink() { return false; } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.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/INodeDirectory.java?rev=1405241&r1=1405240&r2=1405241&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java Sat Nov 3 00:27:42 2012 @@ -75,11 +75,9 @@ class INodeDirectory extends INode { this.children = other.getChildren(); } - /** - * Check whether it's a directory - */ + /** @return true unconditionally. */ @Override - public boolean isDirectory() { + public final boolean isDirectory() { return true; } @@ -202,7 +200,7 @@ class INodeDirectory extends INode { if (index >= 0) { existing[index] = curNode; } - if (curNode.isLink() && (!lastComp || (lastComp && resolveLink))) { + if (curNode.isSymlink() && (!lastComp || (lastComp && resolveLink))) { final String path = constructPath(components, 0, components.length); final String preceding = constructPath(components, 0, count); final String remainder = Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFile.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/INodeFile.java?rev=1405241&r1=1405240&r2=1405241&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFile.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFile.java Sat Nov 3 00:27:42 2012 @@ -55,7 +55,7 @@ class INodeFile extends INode implements private long header; - BlockInfo blocks[] = null; + private BlockInfo[] blocks; INodeFile(PermissionStatus permissions, BlockInfo[] blklist, short replication, long modificationTime, @@ -63,7 +63,7 @@ class INodeFile extends INode implements super(permissions, modificationTime, atime); this.setReplication(replication); this.setPreferredBlockSize(preferredBlockSize); - blocks = blklist; + this.blocks = blklist; } /** @@ -76,11 +76,6 @@ class INodeFile extends INode implements super.setPermission(permission.applyUMask(UMASK)); } - @Override - boolean isDirectory() { - return false; - } - /** @return the replication factor of the file. */ @Override public short getBlockReplication() { @@ -128,7 +123,7 @@ class INodeFile extends INode implements for(BlockInfo bi: newlist) { bi.setBlockCollection(this); } - this.blocks = newlist; + setBlocks(newlist); } /** @@ -136,14 +131,13 @@ class INodeFile extends INode implements */ void addBlock(BlockInfo newblock) { if (this.blocks == null) { - this.blocks = new BlockInfo[1]; - this.blocks[0] = newblock; + this.setBlocks(new BlockInfo[]{newblock}); } else { int size = this.blocks.length; BlockInfo[] newlist = new BlockInfo[size + 1]; System.arraycopy(this.blocks, 0, newlist, 0, size); newlist[size] = newblock; - this.blocks = newlist; + this.setBlocks(newlist); } } @@ -152,6 +146,11 @@ class INodeFile extends INode implements this.blocks[idx] = blk; } + /** Set the blocks. */ + public void setBlocks(BlockInfo[] blocks) { + this.blocks = blocks; + } + @Override int collectSubtreeBlocksAndClear(List v) { parent = null; @@ -161,7 +160,7 @@ class INodeFile extends INode implements blk.setBlockCollection(null); } } - blocks = null; + setBlocks(null); return 1; } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFileUnderConstruction.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/INodeFileUnderConstruction.java?rev=1405241&r1=1405240&r2=1405241&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFileUnderConstruction.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFileUnderConstruction.java Sat Nov 3 00:27:42 2012 @@ -18,6 +18,7 @@ package org.apache.hadoop.hdfs.server.namenode; import java.io.IOException; +import java.util.Arrays; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.fs.permission.PermissionStatus; @@ -28,8 +29,6 @@ import org.apache.hadoop.hdfs.server.blo import org.apache.hadoop.hdfs.server.blockmanagement.MutableBlockCollection; import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.BlockUCState; -import com.google.common.base.Joiner; - /** * I-node for file being written. */ @@ -109,9 +108,9 @@ class INodeFileUnderConstruction extends // use the modification time as the access time // INodeFile convertToInodeFile() { - assert allBlocksComplete() : - "Can't finalize inode " + this + " since it contains " + - "non-complete blocks! Blocks are: " + blocksAsString(); + assert allBlocksComplete() : "Can't finalize inode " + this + + " since it contains non-complete blocks! Blocks are " + + Arrays.asList(getBlocks()); INodeFile obj = new INodeFile(getPermissionStatus(), getBlocks(), getBlockReplication(), @@ -126,7 +125,7 @@ class INodeFileUnderConstruction extends * @return true if all of the blocks in this file are marked as completed. */ private boolean allBlocksComplete() { - for (BlockInfo b : blocks) { + for (BlockInfo b : getBlocks()) { if (!b.isComplete()) { return false; } @@ -139,6 +138,7 @@ class INodeFileUnderConstruction extends * the last one on the list. */ void removeLastBlock(Block oldblock) throws IOException { + final BlockInfo[] blocks = getBlocks(); if (blocks == null) { throw new IOException("Trying to delete non-existant block " + oldblock); } @@ -150,7 +150,7 @@ class INodeFileUnderConstruction extends //copy to a new list BlockInfo[] newlist = new BlockInfo[size_1]; System.arraycopy(blocks, 0, newlist, 0, size_1); - blocks = newlist; + setBlocks(newlist); } /** @@ -159,11 +159,9 @@ class INodeFileUnderConstruction extends */ @Override public BlockInfoUnderConstruction setLastBlock(BlockInfo lastBlock, - DatanodeDescriptor[] targets) - throws IOException { - if (blocks == null || blocks.length == 0) { - throw new IOException("Trying to update non-existant block. " + - "File is empty."); + DatanodeDescriptor[] targets) throws IOException { + if (numBlocks() == 0) { + throw new IOException("Failed to set last block: File is empty."); } BlockInfoUnderConstruction ucBlock = lastBlock.convertToBlockUnderConstruction( @@ -172,8 +170,4 @@ class INodeFileUnderConstruction extends setBlock(numBlocks()-1, ucBlock); return ucBlock; } - - private String blocksAsString() { - return Joiner.on(",").join(this.blocks); - } } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeSymlink.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/INodeSymlink.java?rev=1405241&r1=1405240&r2=1405241&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeSymlink.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeSymlink.java Sat Nov 3 00:27:42 2012 @@ -41,7 +41,7 @@ public class INodeSymlink extends INode } @Override - public boolean isLink() { + public boolean isSymlink() { return true; } @@ -73,9 +73,4 @@ public class INodeSymlink extends INode summary[1]++; // Increment the file count return summary; } - - @Override - public boolean isDirectory() { - return false; - } } Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.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/TestFsck.java?rev=1405241&r1=1405240&r2=1405241&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java Sat Nov 3 00:27:42 2012 @@ -64,6 +64,7 @@ import org.apache.hadoop.hdfs.protocol.C import org.apache.hadoop.hdfs.protocol.ExtendedBlock; import org.apache.hadoop.hdfs.protocol.HdfsFileStatus; import org.apache.hadoop.hdfs.protocol.LocatedBlocks; +import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfo; import org.apache.hadoop.hdfs.server.namenode.NamenodeFsck.Result; import org.apache.hadoop.hdfs.server.protocol.NamenodeProtocols; import org.apache.hadoop.hdfs.tools.DFSck; @@ -678,11 +679,11 @@ public class TestFsck { DFSTestUtil.waitReplication(fs, filePath, (short)1); // intentionally corrupt NN data structure - INodeFile node = - (INodeFile)cluster.getNamesystem().dir.rootDir.getNode(fileName, - true); - assertEquals(node.blocks.length, 1); - node.blocks[0].setNumBytes(-1L); // set the block length to be negative + INodeFile node = (INodeFile)cluster.getNamesystem().dir.rootDir.getNode( + fileName, true); + final BlockInfo[] blocks = node.getBlocks(); + assertEquals(blocks.length, 1); + blocks[0].setNumBytes(-1L); // set the block length to be negative // run fsck and expect a failure with -1 as the error code String outStr = runFsck(conf, -1, true, fileName);