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 om...@apache.org on 2011/04/06 08:22:39 UTC
svn commit: r1089318 - in /hadoop/hdfs/branches/yahoo-merge: CHANGES.txt
src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java
Author: omalley
Date: Wed Apr 6 06:22:39 2011
New Revision: 1089318
URL: http://svn.apache.org/viewvc?rev=1089318&view=rev
Log:
commit 8fbc6cdcf7cb8e071e5aed64a86796a4392bc613
Author: Owen O'Malley <om...@apache.org>
Date: Tue Apr 5 15:57:19 2011 -0700
HDFS-1602. fix testStorageRestore (boryas)
Conflicts:
YAHOO-CHANGES.txt
Modified:
hadoop/hdfs/branches/yahoo-merge/CHANGES.txt
hadoop/hdfs/branches/yahoo-merge/src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
hadoop/hdfs/branches/yahoo-merge/src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java
Modified: hadoop/hdfs/branches/yahoo-merge/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/yahoo-merge/CHANGES.txt?rev=1089318&r1=1089317&r2=1089318&view=diff
==============================================================================
--- hadoop/hdfs/branches/yahoo-merge/CHANGES.txt (original)
+++ hadoop/hdfs/branches/yahoo-merge/CHANGES.txt Wed Apr 6 06:22:39 2011
@@ -255,6 +255,8 @@ Trunk (unreleased changes)
HDFS-1809. Missing DefaultMetricsSystem initialization breaks some tests.
(suresh)
+ HDFS-1602. Fix testStorageRestore (boryas)
+
Release 0.22.0 - Unreleased
NEW FEATURES
Modified: hadoop/hdfs/branches/yahoo-merge/src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/yahoo-merge/src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java?rev=1089318&r1=1089317&r2=1089318&view=diff
==============================================================================
--- hadoop/hdfs/branches/yahoo-merge/src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java (original)
+++ hadoop/hdfs/branches/yahoo-merge/src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java Wed Apr 6 06:22:39 2011
@@ -873,7 +873,9 @@ public class FSEditLog {
return; // nothing to do, edits.new exists!
// check if any of failed storage is now available and put it back
- fsimage.attemptRestoreRemovedStorage();
+ // but don't save the current image to it
+ // (it will be put there as a part of checkpointing)
+ fsimage.attemptRestoreRemovedStorage(false);
divertFileStreams(
Storage.STORAGE_DIR_CURRENT + "/" + NameNodeFile.EDITS_NEW.getName());
Modified: hadoop/hdfs/branches/yahoo-merge/src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/yahoo-merge/src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java?rev=1089318&r1=1089317&r2=1089318&view=diff
==============================================================================
--- hadoop/hdfs/branches/yahoo-merge/src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java (original)
+++ hadoop/hdfs/branches/yahoo-merge/src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java Wed Apr 6 06:22:39 2011
@@ -1674,13 +1674,23 @@ public class FSImage extends Storage {
return bpid;
}
- /** Create new dfs name directory. Caution: this destroys all files
- * in this filesystem. */
+ /**
+ * Create new dfs name directory. Caution: this destroys all files
+ * in this filesystem.
+ * */
void format(StorageDirectory sd) throws IOException {
+ format(sd, true);
+ }
+
+ /**
+ * if saveCurrent is true - save current image to the SD
+ */
+ void format(StorageDirectory sd, boolean saveCurrent) throws IOException {
sd.clearDirectory(); // create currrent dir
sd.lock();
try {
- saveCurrent(sd);
+ if(saveCurrent)
+ saveCurrent(sd);
} finally {
sd.unlock();
}
@@ -2150,8 +2160,10 @@ public class FSImage extends Storage {
for (Iterator<StorageDirectory> it =
dirIterator(NameNodeDirType.IMAGE); it.hasNext();) {
sd = it.next();
- if(sd.getRoot().canRead())
- return getImageFile(sd, NameNodeFile.IMAGE);
+ File fsImage = getImageFile(sd, NameNodeFile.IMAGE);
+ if(sd.getRoot().canRead() && fsImage.exists()) {
+ return fsImage;
+ }
}
return null;
}
@@ -2160,7 +2172,7 @@ public class FSImage extends Storage {
* See if any of removed storages iw "writable" again, and can be returned
* into service
*/
- synchronized void attemptRestoreRemovedStorage() {
+ synchronized void attemptRestoreRemovedStorage(boolean saveCurrentImage) {
// if directory is "alive" - copy the images there...
if(!restoreFailedStorage || removedStorageDirs.size() == 0)
return; //nothing to restore
@@ -2175,7 +2187,7 @@ public class FSImage extends Storage {
try {
if(root.exists() && root.canWrite()) {
- format(sd);
+ format(sd, saveCurrentImage);
LOG.info("restoring dir " + sd.getRoot().getAbsolutePath());
if(sd.getStorageDirType().isOfType(NameNodeDirType.EDITS)) {
File eFile = getEditFile(sd);