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); }