You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2020/10/15 02:49:55 UTC

[hbase] branch branch-2 updated: HBASE-25186 TestMasterRegionOnTwoFileSystems is failing after HBASE-25065 (#2544)

This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 2f566dc  HBASE-25186 TestMasterRegionOnTwoFileSystems is failing after HBASE-25065 (#2544)
2f566dc is described below

commit 2f566dc2343c927b7969f29dfe0c41d6674d95fb
Author: Duo Zhang <zh...@apache.org>
AuthorDate: Thu Oct 15 10:22:14 2020 +0800

    HBASE-25186 TestMasterRegionOnTwoFileSystems is failing after HBASE-25065 (#2544)
    
    Signed-off-by: Ramkrishna <ra...@apache.org>
---
 .../hadoop/hbase/master/region/MasterRegionWALRoller.java    |  6 ++++--
 .../java/org/apache/hadoop/hbase/wal/AbstractWALRoller.java  | 12 +++++++-----
 .../hbase/master/region/TestMasterRegionWALCleaner.java      |  8 ++++++--
 3 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegionWALRoller.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegionWALRoller.java
index ef3dd12..bba6611 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegionWALRoller.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegionWALRoller.java
@@ -29,7 +29,6 @@ import org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL;
 import org.apache.hadoop.hbase.regionserver.wal.WALUtil;
 import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;
 import org.apache.hadoop.hbase.wal.AbstractWALRoller;
-import org.apache.hadoop.hbase.wal.WAL;
 import org.apache.hadoop.hbase.wal.WALFactory;
 import org.apache.yetus.audience.InterfaceAudience;
 import org.slf4j.Logger;
@@ -68,8 +67,11 @@ public final class MasterRegionWALRoller extends AbstractWALRoller<Abortable> {
   }
 
   @Override
-  protected void afterRoll(WAL wal) {
+  protected void afterWALArchive(Path oldPath, Path newPath) {
     // move the archived WAL files to the global archive path
+    // here we do not use the newPath directly, so that even if we fail to move some of the
+    // newPaths, we are still safe because every time we will get all the files under the archive
+    // directory.
     try {
       MasterRegionUtils.moveFilesUnderDir(fs, walArchiveDir, globalWALArchiveDir,
         archivedWALSuffix);
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/AbstractWALRoller.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/AbstractWALRoller.java
index 9263c0f..3f20dfd 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/AbstractWALRoller.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/AbstractWALRoller.java
@@ -28,6 +28,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.Abortable;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL;
@@ -85,6 +86,11 @@ public abstract class AbstractWALRoller<T extends Abortable> extends Thread
               AbstractWALRoller.this.notifyAll();
             }
           }
+
+          @Override
+          public void postLogArchive(Path oldPath, Path newPath) throws IOException {
+            afterWALArchive(oldPath, newPath);
+          }
         });
       }
     }
@@ -184,7 +190,6 @@ public abstract class AbstractWALRoller<T extends Abortable> extends Thread
               scheduleFlush(Bytes.toString(r.getKey()), r.getValue());
             }
           }
-          afterRoll(wal);
         }
       } catch (FailedLogCloseException | ConnectException e) {
         abort("Failed log close in log roller", e);
@@ -200,10 +205,7 @@ public abstract class AbstractWALRoller<T extends Abortable> extends Thread
     LOG.info("LogRoller exiting.");
   }
 
-  /**
-   * Called after we finish rolling the give {@code wal}.
-   */
-  protected void afterRoll(WAL wal) {
+  protected void afterWALArchive(Path oldPath, Path newPath) {
   }
 
   /**
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/region/TestMasterRegionWALCleaner.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/region/TestMasterRegionWALCleaner.java
index fb1d0ac..d21bf2a 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/region/TestMasterRegionWALCleaner.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/region/TestMasterRegionWALCleaner.java
@@ -86,8 +86,12 @@ public class TestMasterRegionWALCleaner extends MasterRegionTestBase {
     region.requestRollAll();
     region.waitUntilWalRollFinished();
     // should have one
-
-    Thread.sleep(9000);
+    FileStatus[] files = fs.listStatus(globalWALArchiveDir);  
+    assertEquals(1, files.length);      Thread.sleep(9000);
+    Thread.sleep(2000); 
+    // should still be there  
+    assertTrue(fs.exists(files[0].getPath()));  
+    Thread.sleep(6000);
     // should have been cleaned
     assertEquals(0, fs.listStatus(globalWALArchiveDir).length);
   }