From ef3854225a0a4e6f0ea878710646422756c77376 Mon Sep 17 00:00:00 2001 From: zhengzhuobinzzb Date: Sat, 18 Dec 2021 23:17:40 +0800 Subject: [PATCH] HBASE-26579 Set storage policy of recovered edits when hbase.wal.storage.type is configured (#3948) Signed-off-by: Duo Zhang Signed-off-by: Peter Somogyi --- .../org/apache/hadoop/hbase/wal/WALSplitUtil.java | 5 +++++ .../org/apache/hadoop/hbase/wal/TestWALSplit.java | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitUtil.java index 11baddb76c4..e5a6d70f241 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitUtil.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitUtil.java @@ -149,6 +149,7 @@ public final class WALSplitUtil { * named for the sequenceid in the passed logEntry: e.g. * /hbase/some_table/2323432434/recovered.edits/2332. This method also ensures existence of * RECOVERED_EDITS_DIR under the region creating it if necessary. + * And also set storage policy for RECOVERED_EDITS_DIR if WAL_STORAGE_POLICY is configured. * @param tableName the table name * @param encodedRegionName the encoded region name * @param seqId the sequence id which used to generate file name @@ -183,6 +184,10 @@ public final class WALSplitUtil { if (!walFS.exists(dir) && !walFS.mkdirs(dir)) { LOG.warn("mkdir failed on {}", dir); + } else { + String storagePolicy = + conf.get(HConstants.WAL_STORAGE_POLICY, HConstants.DEFAULT_WAL_STORAGE_POLICY); + CommonFSUtils.setStoragePolicy(walFS, dir, storagePolicy); } // Append fileBeingSplit to prevent name conflict since we may have duplicate wal entries now. // Append file name ends with RECOVERED_LOG_TMPFILE_SUFFIX to ensure 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 fb278fd0e4c..11781d31a4e 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 @@ -1174,6 +1174,18 @@ public class TestWALSplit { } } + @Test + public void testRecoveredEditsStoragePolicy() throws IOException { + conf.set(HConstants.WAL_STORAGE_POLICY, "ALL_SSD"); + try { + Path path = createRecoveredEditsPathForRegion(); + assertEquals("ALL_SSD", fs.getStoragePolicy(path.getParent()).getName()); + } finally { + conf.unset(HConstants.WAL_STORAGE_POLICY); + } + + } + private Writer generateWALs(int leaveOpen) throws IOException { return generateWALs(NUM_WRITERS, ENTRIES, leaveOpen, 0); }