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

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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new aaa2f50  HBASE-22200 - WALSplitter.hasRecoveredEdits should use same 
FS instance from WAL region dir
aaa2f50 is described below

commit aaa2f50ae199315f5fa1166fff19a56b28ddd4cd
Author: Wellington Chevreuil <wellington.chevre...@gmail.com>
AuthorDate: Thu Apr 11 09:27:24 2019 +0100

    HBASE-22200 - WALSplitter.hasRecoveredEdits should use same FS instance 
from WAL region dir
    
    Signed-off-by: Zach York <zy...@apache.org>
---
 .../assignment/SplitTableRegionProcedure.java      |  3 +-
 .../org/apache/hadoop/hbase/wal/WALSplitter.java   |  7 ++--
 .../org/apache/hadoop/hbase/wal/TestWALSplit.java  | 48 ++++++++++++----------
 3 files changed, 31 insertions(+), 27 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
index 938dffa..0b72ebb 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
@@ -149,8 +149,7 @@ public class SplitTableRegionProcedure
    * @throws IOException IOException
    */
   static boolean hasRecoveredEdits(MasterProcedureEnv env, RegionInfo ri) 
throws IOException {
-    return 
WALSplitter.hasRecoveredEdits(env.getMasterServices().getFileSystem(),
-        env.getMasterConfiguration(), ri);
+    return WALSplitter.hasRecoveredEdits(env.getMasterConfiguration(), ri);
   }
 
   /**
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java
index 638c574..c436db2 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java
@@ -538,14 +538,13 @@ public class WALSplitter {
 
   /**
    * Check whether there is recovered.edits in the region dir
-   * @param walFS FileSystem
    * @param conf conf
    * @param regionInfo the region to check
    * @throws IOException IOException
    * @return true if recovered.edits exist in the region dir
    */
-  public static boolean hasRecoveredEdits(final FileSystem walFS,
-      final Configuration conf, final RegionInfo regionInfo) throws 
IOException {
+  public static boolean hasRecoveredEdits(final Configuration conf,
+    final RegionInfo regionInfo) throws IOException {
     // No recovered.edits for non default replica regions
     if (regionInfo.getReplicaId() != RegionInfo.DEFAULT_REPLICA_ID) {
       return false;
@@ -554,7 +553,7 @@ public class WALSplitter {
     //directly without converting it to default replica's regioninfo.
     Path regionDir = FSUtils.getWALRegionDir(conf, regionInfo.getTable(),
         regionInfo.getEncodedName());
-    NavigableSet<Path> files = getSplitEditFilesSorted(walFS, regionDir);
+    NavigableSet<Path> files = 
getSplitEditFilesSorted(FSUtils.getWALFileSystem(conf), regionDir);
     return files != null && !files.isEmpty();
   }
 
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplit.java 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplit.java
index e6644f0..7504ce4 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplit.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplit.java
@@ -383,18 +383,7 @@ public class TestWALSplit {
    */
   @Test
   public void testRecoveredEditsPathForMeta() throws IOException {
-    byte[] encoded = 
RegionInfoBuilder.FIRST_META_REGIONINFO.getEncodedNameAsBytes();
-    Path tdir = FSUtils.getTableDir(HBASEDIR, TableName.META_TABLE_NAME);
-    Path regiondir = new Path(tdir,
-      RegionInfoBuilder.FIRST_META_REGIONINFO.getEncodedName());
-    fs.mkdirs(regiondir);
-    long now = System.currentTimeMillis();
-    Entry entry =
-        new Entry(new WALKeyImpl(encoded,
-            TableName.META_TABLE_NAME, 1, now, HConstants.DEFAULT_CLUSTER_ID),
-            new WALEdit());
-    Path p = WALSplitter.getRegionSplitEditsPath(entry,
-        FILENAME_BEING_SPLIT, TMPDIRNAME, conf);
+    Path p = createRecoveredEditsPathForRegion();
     String parentOfParent = p.getParent().getParent().getName();
     assertEquals(parentOfParent, 
RegionInfoBuilder.FIRST_META_REGIONINFO.getEncodedName());
   }
@@ -405,27 +394,44 @@ public class TestWALSplit {
    */
   @Test
   public void testOldRecoveredEditsFileSidelined() throws IOException {
-    byte [] encoded = 
RegionInfoBuilder.FIRST_META_REGIONINFO.getEncodedNameAsBytes();
+    Path p = createRecoveredEditsPathForRegion();
     Path tdir = FSUtils.getTableDir(HBASEDIR, TableName.META_TABLE_NAME);
     Path regiondir = new Path(tdir,
       RegionInfoBuilder.FIRST_META_REGIONINFO.getEncodedName());
     fs.mkdirs(regiondir);
-    long now = System.currentTimeMillis();
-    Entry entry =
-        new Entry(new WALKeyImpl(encoded,
-            TableName.META_TABLE_NAME, 1, now, HConstants.DEFAULT_CLUSTER_ID),
-            new WALEdit());
     Path parent = WALSplitter.getRegionDirRecoveredEditsDir(regiondir);
     assertEquals(HConstants.RECOVERED_EDITS_DIR, parent.getName());
     fs.createNewFile(parent); // create a recovered.edits file
-
-    Path p = WALSplitter.getRegionSplitEditsPath(entry,
-        FILENAME_BEING_SPLIT, TMPDIRNAME, conf);
     String parentOfParent = p.getParent().getParent().getName();
     assertEquals(parentOfParent, 
RegionInfoBuilder.FIRST_META_REGIONINFO.getEncodedName());
     WALFactory.createRecoveredEditsWriter(fs, p, conf).close();
   }
 
+  private Path createRecoveredEditsPathForRegion() throws  IOException{
+    byte[] encoded = 
RegionInfoBuilder.FIRST_META_REGIONINFO.getEncodedNameAsBytes();
+    long now = System.currentTimeMillis();
+    Entry entry =
+      new Entry(new WALKeyImpl(encoded,
+        TableName.META_TABLE_NAME, 1, now, HConstants.DEFAULT_CLUSTER_ID),
+        new WALEdit());
+    Path p = WALSplitter.getRegionSplitEditsPath(entry,
+      FILENAME_BEING_SPLIT, TMPDIRNAME, conf);
+    return p;
+  }
+
+  /**
+   * Test hasRecoveredEdits correctly identifies proper recovered edits file 
on related dir.
+   * @throws IOException on any issues found while creating test required 
files/directories.
+   */
+  @Test
+  public void testHasRecoveredEdits() throws IOException {
+    Path p = createRecoveredEditsPathForRegion();
+    assertFalse(WALSplitter.hasRecoveredEdits(conf, 
RegionInfoBuilder.FIRST_META_REGIONINFO));
+    String renamedEdit = p.getName().split("-")[0];
+    fs.createNewFile(new Path(p.getParent(), renamedEdit));
+    assertTrue(WALSplitter.hasRecoveredEdits(conf, 
RegionInfoBuilder.FIRST_META_REGIONINFO));
+  }
+
   private void useDifferentDFSClient() throws IOException {
     // make fs act as a different client now
     // initialize will create a new DFSClient with a new client ID

Reply via email to