From e684c18af250f71aee8b9d7a71eb9dd1a164e7a5 Mon Sep 17 00:00:00 2001 From: Yongqiang YANG Date: Tue, 19 Dec 2023 16:22:46 +0800 Subject: [PATCH 1/4] [enhance](blacklist) seperate blacklist conf from heartbeat --- .../main/java/org/apache/doris/common/Config.java | 14 ++++++++++++++ .../java/org/apache/doris/common/FeConstants.java | 1 - .../org/apache/doris/qe/SimpleSchedulerTest.java | 6 +++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index cad8e7624641a0..46abe86a28b824 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -1778,6 +1778,20 @@ public class Config extends ConfigBase { @ConfField(mutable = true, masterOnly = true) public static long max_backend_heartbeat_failure_tolerance_count = 1; + /** + * Heartbeat interval in seconds. + * Default is 10, which means every 10 seconds, the master will send a heartbeat to all backends. + */ + @ConfField(mutable = false, masterOnly = false) + public static long heartbeat_interval_second = 10; + + /** + * After a backend is marked as unavailable, it will be added to blacklist. + * Default is 120. + */ + @ConfField(mutable = true, masterOnly = false) + public static long blacklist_duration_second = 120; + @ConfField(mutable = true, masterOnly = false, description = { "禁止创建odbc, mysql, broker类型的外表", "Disallow the creation of odbc, mysql, broker type external tables"}) public static boolean enable_odbc_mysql_broker_table = false; diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/FeConstants.java b/fe/fe-core/src/main/java/org/apache/doris/common/FeConstants.java index b9604009bed0ef..a502d79e032d7a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/FeConstants.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/FeConstants.java @@ -34,7 +34,6 @@ public class FeConstants { public static int shortkey_max_column_count = 3; public static int shortkey_maxsize_bytes = 36; - public static int heartbeat_interval_second = 5; public static int checkpoint_interval_second = 60; // 1 minutes // dpp version diff --git a/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java b/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java index 6ba2d2715663dd..90db0b04452908 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java @@ -47,7 +47,7 @@ public class SimpleSchedulerTest { @BeforeClass public static void setUp() { SimpleScheduler.init(); - FeConstants.heartbeat_interval_second = 2; + Config.heartbeat_interval_second = 2; be1 = new Backend(1000L, "192.168.100.0", 9050); be2 = new Backend(1001L, "192.168.100.1", 9050); be3 = new Backend(1002L, "192.168.100.2", 9050); @@ -139,7 +139,7 @@ public void run() { t3.join(); Assert.assertFalse(SimpleScheduler.isAvailable(be1)); - Thread.sleep((FeConstants.heartbeat_interval_second + 5) * 1000); + Thread.sleep((Config.heartbeat_interval_second + 5) * 1000); Assert.assertTrue(SimpleScheduler.isAvailable(be1)); } @@ -194,7 +194,7 @@ public void testGetHostAbnormal() throws UserException, InterruptedException { System.out.println(e.getMessage()); } - Thread.sleep((FeConstants.heartbeat_interval_second + 5) * 1000); + Thread.sleep((Config.heartbeat_interval_second + 5) * 1000); Assert.assertNotNull(SimpleScheduler.getHost(locations.get(0).backend_id, locations, backends, ref)); } } From a64f45b8d5109f3e9ae4f987b7c36e86ffaf8d50 Mon Sep 17 00:00:00 2001 From: Yongqiang YANG Date: Tue, 19 Dec 2023 16:57:15 +0800 Subject: [PATCH 2/4] fix --- fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java | 2 +- .../src/main/java/org/apache/doris/common/ClientPool.java | 2 +- .../src/main/java/org/apache/doris/qe/SimpleScheduler.java | 2 +- .../src/main/java/org/apache/doris/system/HeartbeatMgr.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java index 61f8d69164329c..ed63aa350b416b 100755 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java @@ -2399,7 +2399,7 @@ protected void runAfterCatalogReady() { } public void createFeDiskUpdater() { - feDiskUpdater = new Daemon("feDiskUpdater", FeConstants.heartbeat_interval_second * 1000L) { + feDiskUpdater = new Daemon("feDiskUpdater", Config.heartbeat_interval_second * 1000L) { @Override protected void runOneCycle() { ExecuteEnv.getInstance().refreshAndGetDiskInfo(true); diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/ClientPool.java b/fe/fe-core/src/main/java/org/apache/doris/common/ClientPool.java index 7308a22540234e..bdfffbe4802f00 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/ClientPool.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/ClientPool.java @@ -27,7 +27,7 @@ public class ClientPool { static GenericKeyedObjectPoolConfig heartbeatConfig = new GenericKeyedObjectPoolConfig(); - static int heartbeatTimeoutMs = FeConstants.heartbeat_interval_second * 1000; + static int heartbeatTimeoutMs = Config.heartbeat_interval_second * 1000; static GenericKeyedObjectPoolConfig backendConfig = new GenericKeyedObjectPoolConfig(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java index 4c22ff9d8c7446..47db1913d86dd9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java @@ -176,7 +176,7 @@ public static void addToBlacklist(Long backendID, String reason) { return; } - blacklistBackends.put(backendID, Pair.of(FeConstants.heartbeat_interval_second + 1, reason)); + blacklistBackends.put(backendID, Pair.of(Config.blacklist_duration_second + 1, reason)); LOG.warn("add backend {} to black list. reason: {}", backendID, reason); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java b/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java index 4281ba8f3765f0..4282ad9aa317ee 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/system/HeartbeatMgr.java @@ -78,7 +78,7 @@ public class HeartbeatMgr extends MasterDaemon { private static volatile AtomicReference masterInfo = new AtomicReference<>(); public HeartbeatMgr(SystemInfoService nodeMgr, boolean needRegisterMetric) { - super("heartbeat mgr", FeConstants.heartbeat_interval_second * 1000); + super("heartbeat mgr", Config.heartbeat_interval_second * 1000); this.nodeMgr = nodeMgr; this.executor = ThreadPoolManager.newDaemonFixedThreadPool(Config.heartbeat_mgr_threads_num, Config.heartbeat_mgr_blocking_queue_size, "heartbeat-mgr-pool", needRegisterMetric); From fbb635955cd5e330889f3f2e944dafc6970b1123 Mon Sep 17 00:00:00 2001 From: Yongqiang YANG Date: Wed, 20 Dec 2023 10:54:18 +0800 Subject: [PATCH 3/4] fix --- .../src/main/java/org/apache/doris/common/Config.java | 4 ++-- .../src/main/java/org/apache/doris/qe/SimpleScheduler.java | 1 - .../test/java/org/apache/doris/qe/SimpleSchedulerTest.java | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index 46abe86a28b824..f8cd52bf161eb6 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -1783,14 +1783,14 @@ public class Config extends ConfigBase { * Default is 10, which means every 10 seconds, the master will send a heartbeat to all backends. */ @ConfField(mutable = false, masterOnly = false) - public static long heartbeat_interval_second = 10; + public static int heartbeat_interval_second = 10; /** * After a backend is marked as unavailable, it will be added to blacklist. * Default is 120. */ @ConfField(mutable = true, masterOnly = false) - public static long blacklist_duration_second = 120; + public static int blacklist_duration_second = 120; @ConfField(mutable = true, masterOnly = false, description = { "禁止创建odbc, mysql, broker类型的外表", "Disallow the creation of odbc, mysql, broker type external tables"}) diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java index 47db1913d86dd9..9898f15aa6e475 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java @@ -19,7 +19,6 @@ import org.apache.doris.catalog.Env; import org.apache.doris.common.Config; -import org.apache.doris.common.FeConstants; import org.apache.doris.common.Pair; import org.apache.doris.common.Reference; import org.apache.doris.common.UserException; diff --git a/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java b/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java index 90db0b04452908..231bb7d235b8dc 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java @@ -17,7 +17,6 @@ package org.apache.doris.qe; -import org.apache.doris.common.FeConstants; import org.apache.doris.common.Reference; import org.apache.doris.common.UserException; import org.apache.doris.system.Backend; From 5f58d8f2e2ed895cbb2543f834b66d10b95415d9 Mon Sep 17 00:00:00 2001 From: Yongqiang YANG Date: Wed, 20 Dec 2023 19:31:11 +0800 Subject: [PATCH 4/4] fix --- .../src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java b/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java index 231bb7d235b8dc..ac13900d2cfff6 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java @@ -17,6 +17,7 @@ package org.apache.doris.qe; +import org.apache.doris.common.Config; import org.apache.doris.common.Reference; import org.apache.doris.common.UserException; import org.apache.doris.system.Backend;