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 5d174e702414d4..46d2e766109174 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:  15.0K  (15000)")) //———————— clean table and disable profile ————————