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/07/06 22:58:02 UTC
[40/48] hadoop git commit: HDFS-8709. Clarify automatic sync in
FSEditLog#logEdit.
HDFS-8709. Clarify automatic sync in FSEditLog#logEdit.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0823b936
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0823b936
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0823b936
Branch: refs/heads/YARN-2928
Commit: 0823b9365e00c2341714e8f488ec9112f0e72eb7
Parents: 825dbb8
Author: Andrew Wang <wa...@apache.org>
Authored: Thu Jul 2 10:26:40 2015 -0700
Committer: Zhijie Shen <zj...@apache.org>
Committed: Mon Jul 6 11:32:01 2015 -0700
----------------------------------------------------------------------
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 2 ++
.../hadoop/hdfs/server/namenode/FSEditLog.java | 28 +++++++++++++-------
2 files changed, 20 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/0823b936/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 7b96c56..6678a3e 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -699,6 +699,8 @@ Release 2.8.0 - UNRELEASED
HDFS-8703. Merge refactor of DFSInputStream from ErasureCoding branch
(vinayakumarb)
+ HDFS-8709. Clarify automatic sync in FSEditLog#logEdit. (wang)
+
OPTIMIZATIONS
HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than
http://git-wip-us.apache.org/repos/asf/hadoop/blob/0823b936/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
index 1b0b572..939e841 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java
@@ -409,10 +409,14 @@ public class FSEditLog implements LogsPurgeable {
}
/**
- * Write an operation to the edit log. Do not sync to persistent
- * store yet.
+ * Write an operation to the edit log.
+ * <p/>
+ * Additionally, this will sync the edit log if required by the underlying
+ * edit stream's automatic sync policy (e.g. when the buffer is full, or
+ * if a time interval has elapsed).
*/
void logEdit(final FSEditLogOp op) {
+ boolean needsSync = false;
synchronized (this) {
assert isOpenForWrite() :
"bad state: " + state;
@@ -434,14 +438,16 @@ public class FSEditLog implements LogsPurgeable {
endTransaction(start);
// check if it is time to schedule an automatic sync
- if (!shouldForceSync()) {
- return;
+ needsSync = shouldForceSync();
+ if (needsSync) {
+ isAutoSyncScheduled = true;
}
- isAutoSyncScheduled = true;
}
- // sync buffered edit log entries to persistent store
- logSync();
+ // Sync the log if an automatic sync is required.
+ if (needsSync) {
+ logSync();
+ }
}
/**
@@ -1191,11 +1197,13 @@ public class FSEditLog implements LogsPurgeable {
throws IOException {
return journalSet.getEditLogManifest(fromTxId);
}
-
+
/**
* Finalizes the current edit log and opens a new log segment.
- * @return the transaction id of the BEGIN_LOG_SEGMENT transaction
- * in the new log.
+ *
+ * @param layoutVersion The layout version of the new edit log segment.
+ * @return the transaction id of the BEGIN_LOG_SEGMENT transaction in the new
+ * log.
*/
synchronized long rollEditLog(int layoutVersion) throws IOException {
LOG.info("Rolling edit logs");