You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cu...@apache.org on 2007/08/15 02:01:56 UTC
svn commit: r565981 - in /lucene/hadoop/trunk: CHANGES.txt
src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java
Author: cutting
Date: Tue Aug 14 17:01:55 2007
New Revision: 565981
URL: http://svn.apache.org/viewvc?view=rev&rev=565981
Log:
HADOOP-1712. Fix an unhandled exception on datanode during block CRC upgrade.
Modified:
lucene/hadoop/trunk/CHANGES.txt
lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java
Modified: lucene/hadoop/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?view=diff&rev=565981&r1=565980&r2=565981
==============================================================================
--- lucene/hadoop/trunk/CHANGES.txt (original)
+++ lucene/hadoop/trunk/CHANGES.txt Tue Aug 14 17:01:55 2007
@@ -532,6 +532,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/trunk/src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java?view=diff&rev=565981&r1=565980&r2=565981
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/BlockCrcUpgrade.java Tue Aug 14 17:01:55 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++;