HDFS-11879. Fix JN sync interval in case of exception. Contributed by Hanisha 
Koneru.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/11615631
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/11615631
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/11615631

Branch: refs/heads/YARN-1011
Commit: 11615631360ba49c1e9d256ed4f65119d99fd67d
Parents: 29b7df9
Author: Arpit Agarwal <a...@apache.org>
Authored: Thu May 25 14:01:53 2017 -0700
Committer: Arpit Agarwal <a...@apache.org>
Committed: Thu May 25 14:01:53 2017 -0700

----------------------------------------------------------------------
 .../hdfs/qjournal/server/JournalNodeSyncer.java | 40 ++++++++++++--------
 1 file changed, 25 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/11615631/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNodeSyncer.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNodeSyncer.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNodeSyncer.java
index 99bd499..479f6a0 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNodeSyncer.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/JournalNodeSyncer.java
@@ -172,7 +172,6 @@ public class JournalNodeSyncer {
           } else {
             syncJournals();
           }
-          Thread.sleep(journalSyncInterval);
         } catch (Throwable t) {
           if (!shouldSync) {
             if (t instanceof InterruptedException) {
@@ -194,6 +193,17 @@ public class JournalNodeSyncer {
           LOG.error(
               "JournalNodeSyncer daemon received Runtime exception. ", t);
         }
+        try {
+          Thread.sleep(journalSyncInterval);
+        } catch (InterruptedException e) {
+          if (!shouldSync) {
+            LOG.info("Stopping JournalNode Sync.");
+          } else {
+            LOG.warn("JournalNodeSyncer interrupted", e);
+          }
+          Thread.currentThread().interrupt();
+          return;
+        }
       }
     });
     syncJournalDaemon.start();
@@ -320,30 +330,30 @@ public class JournalNodeSyncer {
 
     List<RemoteEditLog> missingEditLogs = Lists.newArrayList();
 
-    int thisJnIndex = 0, otherJnIndex = 0;
-    int thisJnNumLogs = thisJournalEditLogs.size();
-    int otherJnNumLogs = otherJournalEditLogs.size();
+    int localJnIndex = 0, remoteJnIndex = 0;
+    int localJnNumLogs = thisJournalEditLogs.size();
+    int remoteJnNumLogs = otherJournalEditLogs.size();
 
-    while (thisJnIndex < thisJnNumLogs && otherJnIndex < otherJnNumLogs) {
-      long localJNstartTxId = thisJournalEditLogs.get(thisJnIndex)
+    while (localJnIndex < localJnNumLogs && remoteJnIndex < remoteJnNumLogs) {
+      long localJNstartTxId = thisJournalEditLogs.get(localJnIndex)
           .getStartTxId();
-      long remoteJNstartTxId = otherJournalEditLogs.get(otherJnIndex)
+      long remoteJNstartTxId = otherJournalEditLogs.get(remoteJnIndex)
           .getStartTxId();
 
       if (localJNstartTxId == remoteJNstartTxId) {
-        thisJnIndex++;
-        otherJnIndex++;
+        localJnIndex++;
+        remoteJnIndex++;
       } else if (localJNstartTxId > remoteJNstartTxId) {
-        missingEditLogs.add(otherJournalEditLogs.get(otherJnIndex));
-        otherJnIndex++;
+        missingEditLogs.add(otherJournalEditLogs.get(remoteJnIndex));
+        remoteJnIndex++;
       } else {
-        thisJnIndex++;
+        localJnIndex++;
       }
     }
 
-    if (otherJnIndex < otherJnNumLogs) {
-      for (; otherJnIndex < otherJnNumLogs; otherJnIndex++) {
-        missingEditLogs.add(otherJournalEditLogs.get(otherJnIndex));
+    if (remoteJnIndex < remoteJnNumLogs) {
+      for (; remoteJnIndex < remoteJnNumLogs; remoteJnIndex++) {
+        missingEditLogs.add(otherJournalEditLogs.get(remoteJnIndex));
       }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to