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: 15.0K (15000)"))
//———————— clean table and disable profile ————————
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]