You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ps...@apache.org on 2022/11/25 14:32:08 UTC
[hbase] branch master updated: HBASE-27506 Optionally disable sorting directories by size in CleanerChore (#4896)
This is an automated email from the ASF dual-hosted git repository.
psomogyi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 1ddb5bb43cf HBASE-27506 Optionally disable sorting directories by size in CleanerChore (#4896)
1ddb5bb43cf is described below
commit 1ddb5bb43cfe4f543710a84884a5df20d02ff0a8
Author: Peter Somogyi <ps...@apache.org>
AuthorDate: Fri Nov 25 15:31:56 2022 +0100
HBASE-27506 Optionally disable sorting directories by size in CleanerChore (#4896)
Signed-off-by: Wellington Chevreuil <wc...@apache.org>
---
.../apache/hadoop/hbase/master/cleaner/CleanerChore.java | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/CleanerChore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/CleanerChore.java
index fb1bf99d2a6..6e046f5cabc 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/CleanerChore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/CleanerChore.java
@@ -70,6 +70,13 @@ public abstract class CleanerChore<T extends FileCleanerDelegate> extends Schedu
*/
public static final String LOG_CLEANER_CHORE_SIZE = "hbase.log.cleaner.scan.dir.concurrent.size";
static final String DEFAULT_LOG_CLEANER_CHORE_POOL_SIZE = "1";
+ /**
+ * Enable the CleanerChore to sort the subdirectories by consumed space and start the cleaning
+ * with the largest subdirectory. Enabled by default.
+ */
+ public static final String LOG_CLEANER_CHORE_DIRECTORY_SORTING =
+ "hbase.cleaner.directory.sorting";
+ static final boolean DEFAULT_LOG_CLEANER_CHORE_DIRECTORY_SORTING = true;
private final DirScanPool pool;
@@ -82,6 +89,7 @@ public abstract class CleanerChore<T extends FileCleanerDelegate> extends Schedu
protected List<String> excludeDirs;
private CompletableFuture<Boolean> future;
private boolean forceRun;
+ private boolean sortDirectories;
public CleanerChore(String name, final int sleepPeriod, final Stoppable s, Configuration conf,
FileSystem fs, Path oldFileDir, String confKey, DirScanPool pool) {
@@ -123,6 +131,8 @@ public abstract class CleanerChore<T extends FileCleanerDelegate> extends Schedu
if (excludeDirs != null) {
LOG.info("Cleaner {} excludes sub dirs: {}", name, excludeDirs);
}
+ sortDirectories = conf.getBoolean(LOG_CLEANER_CHORE_DIRECTORY_SORTING,
+ DEFAULT_LOG_CLEANER_CHORE_DIRECTORY_SORTING);
initCleanerChain(confKey);
}
@@ -475,7 +485,9 @@ public abstract class CleanerChore<T extends FileCleanerDelegate> extends Schedu
// Step.3: Start to traverse and delete the sub-directories.
List<CompletableFuture<Boolean>> futures = new ArrayList<>();
if (!subDirs.isEmpty()) {
- sortByConsumedSpace(subDirs);
+ if (sortDirectories) {
+ sortByConsumedSpace(subDirs);
+ }
// Submit the request of sub-directory deletion.
subDirs.forEach(subDir -> {
if (!shouldExclude(subDir)) {