This is an automated email from the ASF dual-hosted git repository.
liuxiaocs7 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 33ec2fbf415 HBASE-30209 MobFileCleanerChore is not registered for
online configur… (#8341)
33ec2fbf415 is described below
commit 33ec2fbf415e2d96bb2883c9053b5124971f2be5
Author: Xiao Liu <[email protected]>
AuthorDate: Tue Jun 16 19:48:36 2026 +0800
HBASE-30209 MobFileCleanerChore is not registered for online configur…
(#8341)
Signed-off-by: Junegunn Choi <[email protected]>
Reviewed-by: Vladimir Rodionov <[email protected]>
(cherry picked from commit ea5f4c500e2ca3d114e6d835e3d7be87614e2777)
---
.../org/apache/hadoop/hbase/master/HMaster.java | 1 +
.../hbase/master/TestMasterChoreScheduled.java | 6 ++++++
.../hadoop/hbase/mob/TestMobFileCleanerChore.java | 23 ++++++++++++++++++++++
3 files changed, 30 insertions(+)
diff --git
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index 25ca935271f..2df9affb5d9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -1487,6 +1487,7 @@ public class HMaster extends HRegionServer implements
MasterServices {
private void initMobCleaner() {
this.mobFileCleanerChore = new MobFileCleanerChore(this);
+ configurationManager.registerObserver(this.mobFileCleanerChore);
getChoreService().scheduleChore(mobFileCleanerChore);
this.mobFileCompactionChore = new MobFileCompactionChore(this);
getChoreService().scheduleChore(mobFileCompactionChore);
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterChoreScheduled.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterChoreScheduled.java
index f10ccd5801c..5eeb8e011c5 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterChoreScheduled.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterChoreScheduled.java
@@ -32,6 +32,7 @@ import org.apache.hadoop.hbase.master.cleaner.LogCleaner;
import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;
import org.apache.hadoop.hbase.master.hbck.HbckChore;
import org.apache.hadoop.hbase.master.janitor.CatalogJanitor;
+import org.apache.hadoop.hbase.mob.MobFileCleanerChore;
import org.apache.hadoop.hbase.testclassification.MasterTests;
import org.apache.hadoop.hbase.testclassification.MediumTests;
import org.junit.jupiter.api.AfterAll;
@@ -108,6 +109,11 @@ public class TestMasterChoreScheduled {
TestChoreField<HbckChore> hbckChoreTestChoreField = new TestChoreField<>();
HbckChore hbckChore = hbckChoreTestChoreField.getChoreObj("hbckChore");
hbckChoreTestChoreField.testIfChoreScheduled(hbckChore);
+
+ TestChoreField<MobFileCleanerChore> mobFileCleanerTestChoreField = new
TestChoreField<>();
+ MobFileCleanerChore mobFileCleanerChore =
+ mobFileCleanerTestChoreField.getChoreObj("mobFileCleanerChore");
+ mobFileCleanerTestChoreField.testIfChoreScheduled(mobFileCleanerChore);
}
/**
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/mob/TestMobFileCleanerChore.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/mob/TestMobFileCleanerChore.java
index c2878a189aa..da02d8c85da 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/mob/TestMobFileCleanerChore.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/mob/TestMobFileCleanerChore.java
@@ -17,6 +17,7 @@
*/
package org.apache.hadoop.hbase.mob;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
@@ -34,6 +35,28 @@ import org.junit.jupiter.api.Test;
@Tag(SmallTests.TAG)
public class TestMobFileCleanerChore {
+ @Test
+ public void testOnConfigurationChangeResizesExecutor() {
+ Configuration conf = new Configuration();
+ conf.setInt(MobConstants.MOB_CLEANER_THREAD_COUNT, 2);
+ HMaster master = mock(HMaster.class);
+ when(master.getServerName()).thenReturn(ServerName.valueOf("localhost",
12345, 1));
+ when(master.getConfiguration()).thenReturn(conf);
+
+ MobFileCleanerChore chore = new MobFileCleanerChore(master);
+ assertEquals(2, chore.getExecutor().getCorePoolSize());
+ assertEquals(2, chore.getExecutor().getMaximumPoolSize());
+
+ Configuration newConf = new Configuration(conf);
+ newConf.setInt(MobConstants.MOB_CLEANER_THREAD_COUNT, 4);
+ chore.onConfigurationChange(newConf);
+
+ assertEquals(4, chore.getExecutor().getCorePoolSize());
+ assertEquals(4, chore.getExecutor().getMaximumPoolSize());
+
+ chore.shutdown();
+ }
+
@Test
public void testShutdownCleansUpExecutor() {
Configuration conf = new Configuration();