You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by sh...@apache.org on 2009/09/25 02:34:42 UTC
svn commit: r818676 - in /hadoop/hdfs/branches/HDFS-265: ./
src/java/org/apache/hadoop/hdfs/server/namenode/
src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/
Author: shv
Date: Fri Sep 25 00:34:41 2009
New Revision: 818676
URL: http://svn.apache.org/viewvc?rev=818676&view=rev
Log:
HDFS-652. Replace BlockInfo.isUnderConstruction() with isComplete(). Contributed by Konstantin Shvachko.
Modified:
hadoop/hdfs/branches/HDFS-265/CHANGES.txt
hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/BlockInfo.java
hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java
hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java
hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
hadoop/hdfs/branches/HDFS-265/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestBlockUnderConstruction.java
Modified: hadoop/hdfs/branches/HDFS-265/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/HDFS-265/CHANGES.txt?rev=818676&r1=818675&r2=818676&view=diff
==============================================================================
--- hadoop/hdfs/branches/HDFS-265/CHANGES.txt (original)
+++ hadoop/hdfs/branches/HDFS-265/CHANGES.txt Fri Sep 25 00:34:41 2009
@@ -55,6 +55,8 @@
HDFS-589. Change block write protocol to support pipeline recovery.
(hairong)
+ HDFS-652. Replace BlockInfo.isUnderConstruction() with isComplete() (shv)
+
BUG FIXES
HDFS-547. TestHDFSFileSystemContract#testOutputStreamClosedTwice
Modified: hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/BlockInfo.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/BlockInfo.java?rev=818676&r1=818675&r2=818676&view=diff
==============================================================================
--- hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/BlockInfo.java (original)
+++ hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/BlockInfo.java Fri Sep 25 00:34:41 2009
@@ -284,10 +284,12 @@
}
/**
- * Is this block being constructed?
+ * Is this block complete?
+ *
+ * @return true if the state of the block is {@link BlockUCState#COMPLETE}
*/
- boolean isUnderConstruction() {
- return !getBlockUCState().equals(BlockUCState.COMPLETE);
+ boolean isComplete() {
+ return getBlockUCState().equals(BlockUCState.COMPLETE);
}
/**
@@ -297,7 +299,7 @@
*/
BlockInfoUnderConstruction convertToBlockUnderConstruction(
BlockUCState s, DatanodeDescriptor[] targets) {
- if(!isUnderConstruction()) {
+ if(isComplete()) {
return new BlockInfoUnderConstruction(
this, getINode().getReplication(), s, targets);
}
Modified: hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java?rev=818676&r1=818675&r2=818676&view=diff
==============================================================================
--- hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java (original)
+++ hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java Fri Sep 25 00:34:41 2009
@@ -254,7 +254,7 @@
BlockInfo lastBlock = fileINode.getLastBlock();
if(lastBlock == null)
return; // no blocks in file yet
- if(!lastBlock.isUnderConstruction())
+ if(lastBlock.isComplete())
return; // already completed (e.g. by syncBlock)
assert lastBlock.getNumBytes() <= commitBlock.getNumBytes() :
"commitBlock length is less than the stored one "
@@ -274,7 +274,7 @@
if(blkIndex < 0)
return null;
BlockInfo curBlock = fileINode.getBlocks()[blkIndex];
- if(!curBlock.isUnderConstruction())
+ if(curBlock.isComplete())
return curBlock;
BlockInfoUnderConstruction ucBlock = (BlockInfoUnderConstruction)curBlock;
if(ucBlock.numNodes() < minReplication)
@@ -1108,7 +1108,7 @@
// check whether safe replication is reached for the block
// only complete blocks are counted towards that
- if(!storedBlock.isUnderConstruction())
+ if(storedBlock.isComplete())
namesystem.incrementSafeBlockCount(numCurrentReplica);
// if file is under construction, then check whether the block
Modified: hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java?rev=818676&r1=818675&r2=818676&view=diff
==============================================================================
--- hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java (original)
+++ hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java Fri Sep 25 00:34:41 2009
@@ -490,7 +490,7 @@
break;
case RBW:
case RWR:
- if(storedBlock.isUnderConstruction())
+ if(!storedBlock.isComplete())
((BlockInfoUnderConstruction)storedBlock).addReplicaIfNotPresent(
this, block, rState);
else
Modified: hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=818676&r1=818675&r2=818676&view=diff
==============================================================================
--- hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original)
+++ hadoop/hdfs/branches/HDFS-265/src/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Fri Sep 25 00:34:41 2009
@@ -567,14 +567,14 @@
BlockInfo curBlock;
while(totalSize<size && iter.hasNext()) {
curBlock = iter.next();
- if(curBlock.isUnderConstruction()) continue;
+ if(!curBlock.isComplete()) continue;
totalSize += addBlock(curBlock, results);
}
if(totalSize<size) {
iter = node.getBlockIterator(); // start from the beginning
for(int i=0; i<startBlock&&totalSize<size; i++) {
curBlock = iter.next();
- if(curBlock.isUnderConstruction()) continue;
+ if(!curBlock.isComplete()) continue;
totalSize += addBlock(curBlock, results);
}
}
@@ -3399,7 +3399,7 @@
if(blocks == null)
continue;
for(BlockInfo b : blocks) {
- if(b.isUnderConstruction())
+ if(!b.isComplete())
numUCBlocks++;
}
}
@@ -3739,7 +3739,7 @@
throw new IOException(msg);
}
INodeFile fileINode = storedBlock.getINode();
- if(!fileINode.isUnderConstruction() || !storedBlock.isUnderConstruction()) {
+ if(!fileINode.isUnderConstruction() || storedBlock.isComplete()) {
String msg = block +
" is already commited, file or block is not under construction().";
LOG.info(msg);
Modified: hadoop/hdfs/branches/HDFS-265/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestBlockUnderConstruction.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/HDFS-265/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestBlockUnderConstruction.java?rev=818676&r1=818675&r2=818676&view=diff
==============================================================================
--- hadoop/hdfs/branches/HDFS-265/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestBlockUnderConstruction.java (original)
+++ hadoop/hdfs/branches/HDFS-265/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestBlockUnderConstruction.java Fri Sep 25 00:34:41 2009
@@ -18,7 +18,6 @@
package org.apache.hadoop.hdfs.server.namenode;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
@@ -94,8 +93,8 @@
// all blocks but the last two should be regular blocks
for(; idx < blocks.length - 2; idx++) {
curBlock = blocks[idx];
- assertFalse("Block is not under construction: " + curBlock,
- curBlock.isUnderConstruction());
+ assertTrue("Block is not complete: " + curBlock,
+ curBlock.isComplete());
assertTrue("Block is not in BlocksMap: " + curBlock,
ns.blockManager.getStoredBlock(curBlock) == curBlock);
}
@@ -107,8 +106,8 @@
assertTrue("Block " + curBlock +
" isUnderConstruction = " + inode.isUnderConstruction() +
" expected to be " + isFileOpen,
- (isFileOpen && !curBlock.isUnderConstruction()) ||
- (!isFileOpen && curBlock.isUnderConstruction() ==
+ (isFileOpen && curBlock.isComplete()) ||
+ (!isFileOpen && !curBlock.isComplete() ==
(curBlock.getBlockUCState() ==
BlockUCState.COMMITTED)));
assertTrue("Block is not in BlocksMap: " + curBlock,
@@ -117,10 +116,10 @@
// the last block is under construction if the file is not closed
curBlock = blocks[idx]; // last block
- assertTrue("Block " + curBlock +
- " isUnderConstruction = " + inode.isUnderConstruction() +
+ assertEquals("Block " + curBlock +
+ " isComplete = " + curBlock.isComplete() +
" expected to be " + isFileOpen,
- curBlock.isUnderConstruction() == isFileOpen);
+ isFileOpen, !curBlock.isComplete());
assertTrue("Block is not in BlocksMap: " + curBlock,
ns.blockManager.getStoredBlock(curBlock) == curBlock);
}