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 zj...@apache.org on 2015/02/11 20:48:51 UTC
[33/50] [abbrv] hadoop git commit: HDFS-7753. Fix Multithreaded
correctness Warnings in BackupImage. Contributed by Rakesh R and Konstantin
Shvachko.
HDFS-7753. Fix Multithreaded correctness Warnings in BackupImage. Contributed by Rakesh R and Konstantin Shvachko.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a4ceea60
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a4ceea60
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a4ceea60
Branch: refs/heads/YARN-2928
Commit: a4ceea60f57a32d531549e492aa5894dd34e0d0f
Parents: 7c6b654
Author: Konstantin V Shvachko <sh...@apache.org>
Authored: Wed Feb 11 00:45:18 2015 -0800
Committer: Konstantin V Shvachko <sh...@apache.org>
Committed: Wed Feb 11 00:45:18 2015 -0800
----------------------------------------------------------------------
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++
.../hdfs/server/namenode/BackupImage.java | 21 +++++++++++++-------
2 files changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4ceea60/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index 2e90478..1d2a76a 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -904,6 +904,9 @@ Release 2.7.0 - UNRELEASED
HDFS-7769. TestHDFSCLI should not create files in hdfs project root dir.
(szetszwo)
+ HDFS-7753. Fix Multithreaded correctness Warnings in BackupImage.
+ (Rakesh R and shv)
+
Release 2.6.1 - UNRELEASED
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4ceea60/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/BackupImage.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/BackupImage.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/BackupImage.java
index 1900b40..dc44959 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/BackupImage.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/BackupImage.java
@@ -92,9 +92,16 @@ public class BackupImage extends FSImage {
storage.setDisablePreUpgradableLayoutCheck(true);
bnState = BNState.DROP_UNTIL_NEXT_ROLL;
}
-
- void setNamesystem(FSNamesystem fsn) {
- this.namesystem = fsn;
+
+ synchronized FSNamesystem getNamesystem() {
+ return namesystem;
+ }
+
+ synchronized void setNamesystem(FSNamesystem fsn) {
+ // Avoids overriding this.namesystem object
+ if (namesystem == null) {
+ this.namesystem = fsn;
+ }
}
/**
@@ -195,7 +202,7 @@ public class BackupImage extends FSImage {
}
FSEditLogLoader logLoader =
- new FSEditLogLoader(namesystem, lastAppliedTxId);
+ new FSEditLogLoader(getNamesystem(), lastAppliedTxId);
int logVersion = storage.getLayoutVersion();
backupInputStream.setBytes(data, logVersion);
@@ -209,7 +216,7 @@ public class BackupImage extends FSImage {
}
lastAppliedTxId = logLoader.getLastAppliedTxId();
- FSImage.updateCountForQuota(namesystem.dir.rootDir); // inefficient!
+ FSImage.updateCountForQuota(getNamesystem().dir.getRoot()); // inefficient!
} finally {
backupInputStream.clear();
}
@@ -258,7 +265,7 @@ public class BackupImage extends FSImage {
editStreams.add(s);
}
}
- loadEdits(editStreams, namesystem);
+ loadEdits(editStreams, getNamesystem());
}
// now, need to load the in-progress file
@@ -293,7 +300,7 @@ public class BackupImage extends FSImage {
+ " txns from in-progress stream " + stream);
FSEditLogLoader loader =
- new FSEditLogLoader(namesystem, lastAppliedTxId);
+ new FSEditLogLoader(getNamesystem(), lastAppliedTxId);
loader.loadFSEdits(stream, lastAppliedTxId + 1);
lastAppliedTxId = loader.getLastAppliedTxId();
assert lastAppliedTxId == getEditLog().getLastWrittenTxId();