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

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


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new 33938b8b509 [Test](bloom filter) enhance bloom filter test case with 
retry logic #42243 (#42263)
33938b8b509 is described below

commit 33938b8b50972e0f42a1398160fc72274eda320e
Author: airborne12 <[email protected]>
AuthorDate: Tue Oct 22 21:54:14 2024 +0800

    [Test](bloom filter) enhance bloom filter test case with retry logic #42243 
(#42263)
    
    cherry pick from #42243
---
 ...est_bloom_filter_hit_with_renamed_column.groovy | 57 ++++++++++++++++------
 1 file changed, 43 insertions(+), 14 deletions(-)

diff --git 
a/regression-test/suites/bloom_filter_p0/test_bloom_filter_hit_with_renamed_column.groovy
 
b/regression-test/suites/bloom_filter_p0/test_bloom_filter_hit_with_renamed_column.groovy
index 5d174e70241..46d2e766109 100644
--- 
a/regression-test/suites/bloom_filter_p0/test_bloom_filter_hit_with_renamed_column.groovy
+++ 
b/regression-test/suites/bloom_filter_p0/test_bloom_filter_hit_with_renamed_column.groovy
@@ -114,23 +114,52 @@ suite("test_bloom_filter_hit_with_renamed_column") {
     sql """ set parallel_scan_min_rows_per_scanner = 2097152; """
     sql """ select C_COMMENT_NEW from ${tableName} where C_COMMENT_NEW='OK' """
 
-    // get and check profile
-    def profileUrl = '/rest/v1/query_profile/'
-    def profiles = httpGet(profileUrl)
-    log.debug("profiles:{}", profiles);
-    profiles = new JsonSlurper().parseText(profiles)
-    assertEquals(0, profiles.code)
-
-    def profileId = null;
-    for (def profile in profiles["data"]["rows"]) {
-        if (profile["Sql Statement"].contains("""select C_COMMENT_NEW from 
${tableName} where C_COMMENT_NEW='OK'""")) {
-            profileId = profile["Profile ID"]
-            break;
+    // get and check profile with retry logic
+    def getProfileIdWithRetry = { query, maxRetries, waitSeconds ->
+        def profileUrl = '/rest/v1/query_profile/'
+        def profiles = null
+        def profileId = null
+        int attempt = 0
+
+        while (attempt < maxRetries) {
+            profiles = httpGet(profileUrl)
+            log.debug("profiles attempt ${attempt + 1}: {}", profiles)
+            if (profiles == null) {
+                log.warn("Failed to fetch profiles on attempt ${attempt + 1}")
+            } else {
+                def jsonProfiles = new JsonSlurper().parseText(profiles)
+                if (jsonProfiles.code == 0) {
+                    for (def profile in jsonProfiles["data"]["rows"]) {
+                        if (profile["Sql Statement"].contains(query)) {
+                            profileId = profile["Profile ID"]
+                            break
+                        }
+                    }
+                } else {
+                    log.warn("Profile response code is not 0 on attempt 
${attempt + 1}")
+                }
+            }
+
+            if (profileId != null) {
+                break
+            } else {
+                attempt++
+                if (attempt < maxRetries) {
+                    log.info("profileId is null, retrying after ${waitSeconds} 
second(s)... (Attempt ${attempt + 1}/${maxRetries})")
+                    sleep(waitSeconds * 1000)
+                }
+            }
         }
+
+        assertTrue(profileId != null, "Failed to retrieve profileId after 
${maxRetries} attempts")
+        return profileId
     }
-    log.info("profileId:{}", profileId);
+
+    def query = """select C_COMMENT_NEW from ${tableName} where 
C_COMMENT_NEW='OK'"""
+    def profileId = getProfileIdWithRetry(query, 3, 1)
+    log.info("profileId:{}", profileId)
     def profileDetail = httpGet("/rest/v1/query_profile/" + profileId)
-    log.info("profileDetail:{}", profileDetail);
+    log.info("profileDetail:{}", profileDetail)
     
assertTrue(profileDetail.contains("BloomFilterFiltered:&nbsp;&nbsp;15.0K&nbsp;&nbsp;(15000)"))
 
     //———————— clean table and disable profile ————————


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

Reply via email to