From 8723a17b90777efa2acd1829dd55dd3b031cfe3f Mon Sep 17 00:00:00 2001 From: shuke <37901441+shuke987@users.noreply.github.com> Date: Mon, 13 Jul 2026 21:25:07 +0800 Subject: [PATCH 1/2] [test](regression) Apply publish debug point to all FEs ### What problem does this PR solve? Issue Number: N/A Related PR: #65340 Problem Summary: The insert visible-timeout case enabled PublishVersionDaemon.stop_publish only on the FE HTTP endpoint configured for the regression runner. Dynamic pipelines can connect the runner to a follower FE, while PublishVersionDaemon runs only on the master FE, so the debug point may not block publishing and the expected timeout is not returned. Apply and remove the debug point on all FEs so the master is always covered and cleanup remains symmetric. ### Release note None ### Check List (For Author) - Test: Manual test - Built the regression-test framework with Maven. - Compiled the target Groovy suite with FileSystemCompiler. - Ran git diff --check. - Behavior changed: No. Test-only stabilization. - Does this need documentation: No. --- .../test_insert_visible_timeout_return_mode.groovy | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/regression-test/suites/insert_p0/test_insert_visible_timeout_return_mode.groovy b/regression-test/suites/insert_p0/test_insert_visible_timeout_return_mode.groovy index 978bd137d8ead5..e3fed8b5978519 100644 --- a/regression-test/suites/insert_p0/test_insert_visible_timeout_return_mode.groovy +++ b/regression-test/suites/insert_p0/test_insert_visible_timeout_return_mode.groovy @@ -15,9 +15,6 @@ // specific language governing permissions and limitations // under the License. -import org.apache.doris.regression.util.DebugPoint -import org.apache.doris.regression.util.NodeType - suite("test_insert_visible_timeout_return_mode", "nonConcurrent") { if (isCloudMode()) { return @@ -25,10 +22,6 @@ suite("test_insert_visible_timeout_return_mode", "nonConcurrent") { def tableName = "test_insert_visible_timeout_return_mode_tbl" def debugPoint = "PublishVersionDaemon.stop_publish" - // Use the configured FE HTTP endpoint so the case also works when SHOW FRONTENDS exposes loopback addresses. - def feHttpAddress = context.config.feHttpAddress - def feHost = feHttpAddress.split(":")[0] - def feHttpPort = Integer.parseInt(feHttpAddress.split(":")[1]) // Prepare a single-replica table so publish blocking deterministically drives the visible timeout path. sql """ DROP TABLE IF EXISTS ${tableName} FORCE """ @@ -44,8 +37,9 @@ suite("test_insert_visible_timeout_return_mode", "nonConcurrent") { """ try { - // Block FE publish so inserts can commit but remain non-visible until the debug point is removed. - DebugPoint.enableDebugPoint(feHost, feHttpPort, NodeType.FE, debugPoint) + // PublishVersionDaemon only runs on the master FE. Enable the debug point on every FE so the + // case does not depend on whether the regression runner is connected to a master or follower FE. + GetDebugPoint().enableDebugPointForAllFEs(debugPoint) sql """ SET insert_visible_timeout_ms = 1000 """ @@ -61,7 +55,7 @@ suite("test_insert_visible_timeout_return_mode", "nonConcurrent") { } } finally { try { - DebugPoint.disableDebugPoint(feHost, feHttpPort, NodeType.FE, debugPoint) + GetDebugPoint().disableDebugPointForAllFEs(debugPoint) } catch (Throwable e) { logger.warn("Failed to disable debug point ${debugPoint}", e) } From e30bb4b10d48c3b1e0a026eba4c6518e001f27f9 Mon Sep 17 00:00:00 2001 From: shuke <37901441+shuke987@users.noreply.github.com> Date: Wed, 15 Jul 2026 14:55:19 +0800 Subject: [PATCH 2/2] [test](regression) Target publish debug point on master FE ### What problem does this PR solve? Issue Number: N/A Related PR: #65340 Problem Summary: PublishVersionDaemon runs only on the master FE. Identify the master from one SHOW FRONTENDS snapshot and apply the stop_publish debug point only to that FE, while keeping the suite JDBC connection unchanged. This avoids injecting the fault into every FE and avoids coupling the test to a master JDBC endpoint. ### Release note None ### Check List (For Author) - Test: Manual test - Built the regression-test framework with Maven. - Compiled the target Groovy suite with FileSystemCompiler. - Ran git diff --check. - Behavior changed: No. Test-only stabilization. - Does this need documentation: No. --- ...est_insert_visible_timeout_return_mode.groovy | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/regression-test/suites/insert_p0/test_insert_visible_timeout_return_mode.groovy b/regression-test/suites/insert_p0/test_insert_visible_timeout_return_mode.groovy index e3fed8b5978519..fdf3ffdf0c9f1f 100644 --- a/regression-test/suites/insert_p0/test_insert_visible_timeout_return_mode.groovy +++ b/regression-test/suites/insert_p0/test_insert_visible_timeout_return_mode.groovy @@ -15,6 +15,9 @@ // specific language governing permissions and limitations // under the License. +import org.apache.doris.regression.util.DebugPoint +import org.apache.doris.regression.util.NodeType + suite("test_insert_visible_timeout_return_mode", "nonConcurrent") { if (isCloudMode()) { return @@ -36,10 +39,15 @@ suite("test_insert_visible_timeout_return_mode", "nonConcurrent") { ) """ + def masterFe = sql_return_maparray("SHOW FRONTENDS").find { it.IsMaster == "true" } + assertNotNull(masterFe, "Could not find master FE") + def masterFeHost = masterFe.Host as String + def masterFeHttpPort = masterFe.HttpPort as int + try { - // PublishVersionDaemon only runs on the master FE. Enable the debug point on every FE so the - // case does not depend on whether the regression runner is connected to a master or follower FE. - GetDebugPoint().enableDebugPointForAllFEs(debugPoint) + // PublishVersionDaemon only runs on the master FE. Keep the SQL connection unchanged and + // inject the fault directly into the master identified by the same SHOW FRONTENDS snapshot. + DebugPoint.enableDebugPoint(masterFeHost, masterFeHttpPort, NodeType.FE, debugPoint) sql """ SET insert_visible_timeout_ms = 1000 """ @@ -55,7 +63,7 @@ suite("test_insert_visible_timeout_return_mode", "nonConcurrent") { } } finally { try { - GetDebugPoint().disableDebugPointForAllFEs(debugPoint) + DebugPoint.disableDebugPoint(masterFeHost, masterFeHttpPort, NodeType.FE, debugPoint) } catch (Throwable e) { logger.warn("Failed to disable debug point ${debugPoint}", e) }