This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-4.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.1 by this push:
     new e56092ea28b [fix](test) Fix jdbc manual miss load case closure order 
(#65335)
e56092ea28b is described below

commit e56092ea28bd7805ced52789b3b0bf69043f904f
Author: shuke <[email protected]>
AuthorDate: Fri Jul 10 15:40:18 2026 +0800

    [fix](test) Fix jdbc manual miss load case closure order (#65335)
    
    ## Summary
    
    Fix the branch-4.1 external regression case
    `test_jdbc_refresh_catalog_manual_miss_load`.
    
    The failing TeamCity occurrence reports:
    
    ```text
    groovy.lang.MissingMethodException: No signature of method:
    org.apache.doris.regression.suite.Suite.getSchemaCacheSize() is applicable
    ```
    
    `preheatSchemaCache` called `getSchemaCacheSize()` before the local
    closure was
    declared, so Groovy resolved it as a missing `Suite` method at runtime.
    
    This patch also keeps the case able to exercise its intended debug-point
    race
    path:
    
    - Adds the `nonConcurrent` tag required by `GetDebugPoint()`.
    - Uses the actual JDBC FE debug point
    `JdbcExternalTable.initSchema.sleep`
    instead of the nonexistent `PluginDrivenExternalTable.initSchema.sleep`.
    
    ## Testing
    
    - [x] `git diff --check`
    - [x] Parsed the Groovy case with `GroovyShell`
    - [ ] Full external regression was not run locally; this case depends on
    the
    branch-4.1 external JDBC environment, FE debug points, and external
    MySQL
          configuration
---
 ...st_jdbc_refresh_catalog_manual_miss_load.groovy | 25 +++++++++++-----------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git 
a/regression-test/suites/external_table_p0/jdbc/test_jdbc_refresh_catalog_manual_miss_load.groovy
 
b/regression-test/suites/external_table_p0/jdbc/test_jdbc_refresh_catalog_manual_miss_load.groovy
index f9e942c277a..916dce15ea4 100644
--- 
a/regression-test/suites/external_table_p0/jdbc/test_jdbc_refresh_catalog_manual_miss_load.groovy
+++ 
b/regression-test/suites/external_table_p0/jdbc/test_jdbc_refresh_catalog_manual_miss_load.groovy
@@ -22,7 +22,7 @@ import java.util.UUID
 // default Apache Doris CI pipeline, so the case can be skipped or may not run
 // end-to-end there. That is expected. The case still serves as a valuable
 // reference for manual validation of the MetaCacheEntry refresh blocking fix.
-suite("test_jdbc_refresh_catalog_manual_miss_load", "p0,external") {
+suite("test_jdbc_refresh_catalog_manual_miss_load", 
"p0,external,nonConcurrent") {
     String enabled = context.config.otherConfigs.get("enableJdbcTest")
     if (enabled == null || !enabled.equalsIgnoreCase("true")) {
         return
@@ -41,6 +41,7 @@ suite("test_jdbc_refresh_catalog_manual_miss_load", 
"p0,external") {
     int hashMod = 512
     int slowSleepMs = 15000
     int refreshDelayMs = 5000
+    String schemaSleepDebugPoint = "JdbcExternalTable.initSchema.sleep"
 
     def mysqlJdbcUrl = "jdbc:mysql://${externalEnvIp}:${mysqlPort}"
     def configRows = sql """ADMIN SHOW FRONTEND CONFIG LIKE 
'enable_external_meta_cache_manual_miss_load';"""
@@ -127,14 +128,6 @@ suite("test_jdbc_refresh_catalog_manual_miss_load", 
"p0,external") {
         }
     }
 
-    def preheatSchemaCache = { List<String> collisionTableNames ->
-        sql """REFRESH CATALOG ${catalogName}"""
-        collisionTableNames.each { tableName ->
-            sql """DESC ${catalogName}.${remoteDbName}.${tableName}"""
-        }
-        assertEquals(collisionTableCount, getSchemaCacheSize())
-    }
-
     // Read the current schema cache size for this catalog from 
information_schema.
     def getSchemaCacheSize = {
         def statRows = sql """
@@ -146,12 +139,20 @@ suite("test_jdbc_refresh_catalog_manual_miss_load", 
"p0,external") {
         return ((Number) statRows[0][0]).intValue()
     }
 
+    def preheatSchemaCache = { List<String> collisionTableNames ->
+        sql """REFRESH CATALOG ${catalogName}"""
+        collisionTableNames.each { tableName ->
+            sql """DESC ${catalogName}.${remoteDbName}.${tableName}"""
+        }
+        assertEquals(collisionTableCount, getSchemaCacheSize())
+    }
+
     // Run the blocking reproduction once and assert the refresh latency 
profile.
     def runRefreshRace = { boolean manualMissLoadEnabled, long minRefreshMs, 
long maxRefreshMs ->
         sql """ADMIN SET FRONTEND CONFIG 
('enable_external_meta_cache_manual_miss_load' = '${manualMissLoadEnabled}')"""
         try {
             GetDebugPoint().enableDebugPointForAllFEs(
-                    "PluginDrivenExternalTable.initSchema.sleep",
+                    schemaSleepDebugPoint,
                     ["sleepMs": String.valueOf(slowSleepMs)])
 
             def descElapsedMs = -1L
@@ -190,7 +191,7 @@ suite("test_jdbc_refresh_catalog_manual_miss_load", 
"p0,external") {
             assertTrue(refreshElapsedMs < descElapsedMs)
             return [refreshElapsedMs, descElapsedMs]
         } finally {
-            
GetDebugPoint().disableDebugPointForAllFEs("PluginDrivenExternalTable.initSchema.sleep")
+            GetDebugPoint().disableDebugPointForAllFEs(schemaSleepDebugPoint)
         }
     }
 
@@ -229,7 +230,7 @@ suite("test_jdbc_refresh_catalog_manual_miss_load", 
"p0,external") {
     } finally {
         try_sql("""ADMIN SET FRONTEND CONFIG 
('enable_external_meta_cache_manual_miss_load' = 
'${originalManualMissLoadValue}')""")
         try {
-            
GetDebugPoint().disableDebugPointForAllFEs("PluginDrivenExternalTable.initSchema.sleep")
+            GetDebugPoint().disableDebugPointForAllFEs(schemaSleepDebugPoint)
         } catch (Throwable t) {
             logger.warn("failed to disable debug point during cleanup", t)
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to