This is an automated email from the ASF dual-hosted git repository.
Gabriel39 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new f7d50550062 [fix](regression) Stabilize external regression cases
(#67176)
f7d50550062 is described below
commit f7d5055006264b31e6a4d9d906a64c54050bb1cb
Author: Gabriel <[email protected]>
AuthorDate: Thu Aug 27 14:29:17 2026 +0800
[fix](regression) Stabilize external regression cases (#67176)
### What problem does this PR solve?
Issue Number: None
Related PR: None
Problem Summary: The external regression run exposed two independent
test-environment problems:
1. The backup/restore colocate suites use tiny tables. Automatic
statistics can make the optimizer choose a broadcast join, masking the
restored colocate metadata that the assertions intend to verify. Disable
broadcast planning in those suite sessions so the existing positive and
negative checks consistently validate colocate restoration.
2. The external pipeline replaces the default FE configuration but
omitted the ADBC JNI library path. The ADBC suites consequently fell
back to the native library bundled in the Maven dependency, which
requires a newer glibc than the regression hosts provide. Preserve the
Doris-built JNI library path in the external FE options so all existing
ADBC end-to-end suites load the compatible library shipped with the FE
output.
### Release note
None
### Check List (For Author)
- Test: Regression Test
- Built the regression framework and ran its unit tests with
`./run-regression-test.sh --compile`
- Compiled the updated backup/restore Groovy suite with the Groovy
compiler
- Verified the external FE configuration resolves the ADBC JNI directory
through the same parsing logic used by `start_fe.sh`
- The existing `external_table_p0/adbc` suites provide end-to-end
coverage of JNI loading and ADBC queries
- Behavior changed: No
- Does this need documentation: No
---
regression-test/pipeline/external/conf/fe.conf | 3 ++-
.../suites/backup_restore/test_backup_restore_colocate.groovy | 6 ++++++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/regression-test/pipeline/external/conf/fe.conf
b/regression-test/pipeline/external/conf/fe.conf
index fc818a862a1..d5c3e734433 100644
--- a/regression-test/pipeline/external/conf/fe.conf
+++ b/regression-test/pipeline/external/conf/fe.conf
@@ -28,7 +28,8 @@ DATE = `date +%Y%m%d-%H%M%S`
JAVA_OPTS="-Xmx4096m -XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=$DORIS_HOME/log/fe.jmap -XX:+UseMembar -XX:SurvivorRatio=8
-XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails
-XX:+PrintClassHistogramAfterFullGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0
-Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE
-Dcom.mysql.cj.disableAbandonedConnectionCleanup=true"
# For jdk 17+, this JAVA_OPTS will be used as default JVM options
-JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8
-Djavax.security.auth.useSubjectCredsOnly=false -Xmx4096m -XX:+UseG1GC
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR
-Xlog:gc*,classhisto*=trace:$LOG_DIR/fe.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M
-Darrow.enable_null_check_for_get=false
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNN [...]
+# Use Doris' compatible ADBC JNI build because the Maven-bundled library
requires a newer glibc.
+JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8
-Djavax.security.auth.useSubjectCredsOnly=false -Xmx4096m -XX:+UseG1GC
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR
-Xlog:gc*,classhisto*=trace:$LOG_DIR/fe.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M
-Darrow.enable_null_check_for_get=false
-Darrow.adbc.driver.jni.library.path=${DORIS_HOME}/lib
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
--add-opens=java.base/java.lang.re [...]
##
## the lowercase properties are read by main program.
diff --git
a/regression-test/suites/backup_restore/test_backup_restore_colocate.groovy
b/regression-test/suites/backup_restore/test_backup_restore_colocate.groovy
index f53146dca8d..b4d84a5519f 100644
--- a/regression-test/suites/backup_restore/test_backup_restore_colocate.groovy
+++ b/regression-test/suites/backup_restore/test_backup_restore_colocate.groovy
@@ -16,6 +16,9 @@
// under the License.
suite("test_backup_restore_colocate", "backup_restore,external") {
+ // Prevent CBO from masking restored colocate metadata with a broadcast
plan for these tiny tables.
+ sql "set broadcast_row_count_limit = 0"
+
String suiteName = "test_backup_restore_colocate"
String repoName = "${suiteName}_repo_" +
UUID.randomUUID().toString().replace("-", "")
String dbName = "${suiteName}_db"
@@ -352,6 +355,9 @@ suite("test_backup_restore_colocate",
"backup_restore,external") {
}
suite("test_backup_restore_colocate_with_partition", "backup_restore") {
+ // Prevent CBO from masking restored colocate metadata with a broadcast
plan for these tiny tables.
+ sql "set broadcast_row_count_limit = 0"
+
String suiteName = "test_backup_restore_colocate_with_partition"
String repoName = "${suiteName}_repo_" +
UUID.randomUUID().toString().replace("-", "")
String dbName = "${suiteName}_db"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]