Author: cutting Date: Tue Aug 14 17:03:04 2007 New Revision: 565983 URL: http://svn.apache.org/viewvc?view=rev&rev=565983 Log: Merge -r 565980:565981 from trunk to 0.14 branch. Fixes: HADOOP-1712.
Modified: lucene/hadoop/branches/branch-0.14/CHANGES.txt lucene/hadoop/branches/branch-0.14/src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java Modified: lucene/hadoop/branches/branch-0.14/CHANGES.txt URL: http://svn.apache.org/viewvc/lucene/hadoop/branches/branch-0.14/CHANGES.txt?view=diff&rev=565983&r1=565982&r2=565983 ============================================================================== --- lucene/hadoop/branches/branch-0.14/CHANGES.txt (original) +++ lucene/hadoop/branches/branch-0.14/CHANGES.txt Tue Aug 14 17:03:04 2007 @@ -526,6 +526,10 @@ 156. HADOOP-1663. Return a non-zero exit code if streaming fails. (Lohit Renu via omalley) +157. HADOOP-1712. Fix an unhandled exception on datanode during block + CRC upgrade. (Raghu Angadi via cutting) + + Release 0.13.0 - 2007-06-08 1. HADOOP-1047. Fix TestReplication to succeed more reliably. Modified: lucene/hadoop/branches/branch-0.14/src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java URL: http://svn.apache.org/viewvc/lucene/hadoop/branches/branch-0.14/src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java?view=diff&rev=565983&r1=565982&r2=565983 ============================================================================== --- lucene/hadoop/branches/branch-0.14/src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java (original) +++ lucene/hadoop/branches/branch-0.14/src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java Tue Aug 14 17:03:04 2007 @@ -45,7 +45,6 @@ import java.util.Iterator; import java.util.Map; import java.util.HashSet; -import java.util.Random; /* This containtains information about CRC file and blocks created by * ChecksumFileSystem for a given block. @@ -1377,6 +1376,10 @@ } void doUpgrade() throws IOException { + doUpgradeInternal(); + } + + private void doUpgradeInternal() { if ( upgradeCompleted ) { assert offlineUpgrade : @@ -1410,13 +1413,23 @@ LOG.info("Starting Block CRC upgrade."); - namenode = (DatanodeProtocol) RetryProxy.create( - DatanodeProtocol.class, - RPC.waitForProxy(DatanodeProtocol.class, - DatanodeProtocol.versionID, - getDatanode().getNameNodeAddr(), - conf), - methodNameToPolicyMap); + for (;;) { + try { + namenode = (DatanodeProtocol) RetryProxy.create( + DatanodeProtocol.class, + RPC.waitForProxy(DatanodeProtocol.class, + DatanodeProtocol.versionID, + getDatanode().getNameNodeAddr(), + conf), + methodNameToPolicyMap); + break; + } catch (IOException e) { + LOG.warn("Exception while trying to connect to NameNode at " + + getDatanode().getNameNodeAddr().toString() + " : " + + StringUtils.stringifyException(e)); + BlockCrcUpgradeUtils.sleep(10, "will retry connecting to NameNode"); + } + } conf = null; @@ -1428,7 +1441,17 @@ Block [] blockArr = dataset.getBlockReport(); for ( Block b : blockArr ) { - File blockFile = dataset.getBlockFile( b ); + File blockFile = null; + try { + blockFile = dataset.getBlockFile( b ); + } catch (IOException e) { + //The block might just be deleted. ignore it. + LOG.warn("Could not find file location for " + b + + ". It might already be deleted. Exception : " + + StringUtils.stringifyException(e)); + errors++; + continue; + } if (!blockFile.exists()) { LOG.error("could not find block file " + blockFile); errors++;