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 to...@apache.org on 2012/02/02 23:11:46 UTC
svn commit: r1239879 - in
/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs:
CHANGES.txt src/main/java/org/apache/hadoop/hdfs/server/common/Storage.java
Author: todd
Date: Thu Feb 2 22:11:45 2012
New Revision: 1239879
URL: http://svn.apache.org/viewvc?rev=1239879&view=rev
Log:
HDFS-2877. If locking of a storage dir fails, it will remove the other NN's lock file on exit. Contributed by Todd Lipcon.
Modified:
hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/Storage.java
Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1239879&r1=1239878&r2=1239879&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Thu Feb 2 22:11:45 2012
@@ -1554,6 +1554,9 @@ Release 0.22.1 - Unreleased
BUG FIXES
+ HDFS-2877. If locking of a storage dir fails, it will remove the other
+ NN's lock file on exit. (todd)
+
Release 0.22.0 - 2011-11-29
INCOMPATIBLE CHANGES
Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/Storage.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/Storage.java?rev=1239879&r1=1239878&r2=1239879&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/Storage.java (original)
+++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/Storage.java Thu Feb 2 22:11:45 2012
@@ -599,8 +599,12 @@ public abstract class Storage extends St
* @throws IOException if locking fails.
*/
FileLock tryLock() throws IOException {
+ boolean deletionHookAdded = false;
File lockF = new File(root, STORAGE_FILE_LOCK);
- lockF.deleteOnExit();
+ if (!lockF.exists()) {
+ lockF.deleteOnExit();
+ deletionHookAdded = true;
+ }
RandomAccessFile file = new RandomAccessFile(lockF, "rws");
FileLock res = null;
try {
@@ -613,6 +617,12 @@ public abstract class Storage extends St
file.close();
throw e;
}
+ if (res != null && !deletionHookAdded) {
+ // If the file existed prior to our startup, we didn't
+ // call deleteOnExit above. But since we successfully locked
+ // the dir, we can take care of cleaning it up.
+ lockF.deleteOnExit();
+ }
return res;
}