Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 27 additions & 22 deletions .github/workflows/run-regression-high-performance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ jobs:
with:
suite_name: aggregate_functions
part: 1
timeout_minutes: 180
timeout_minutes: 360
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
Expand Down Expand Up @@ -269,7 +269,7 @@ jobs:
with:
suite_name: aggregate_functions
part: 3
timeout_minutes: 240
timeout_minutes: 360
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
Expand Down Expand Up @@ -303,11 +303,11 @@ jobs:
with:
suite_name: alter
job_name: alter_replace_partition
timeout_minutes: 180
timeout_minutes: 360
storage_path: /replace_partition
regression_args: '--only "/alter/replace partition/*"'
artifact_name: alter-replace-partition-artifacts
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax31-cax41' || 'type-cx53-cpx52' }}
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
version: ${{ inputs.version }}
Expand Down Expand Up @@ -496,6 +496,7 @@ jobs:
part: ${{ matrix.part }}
timeout_minutes: 180
storage_path: /no_ssl
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
version: ${{ inputs.version }}
Expand All @@ -520,6 +521,7 @@ jobs:
storage_path: /ssl
regression_args: '--ssl'
artifact_name: clickhouse_keeper-ssl-artifacts
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
version: ${{ inputs.version }}
Expand Down Expand Up @@ -585,7 +587,7 @@ jobs:
uses: ./.github/workflows/reusable-suite.yml
with:
suite_name: disk_level_encryption
timeout_minutes: 180
timeout_minutes: 300
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-ccx33' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
Expand Down Expand Up @@ -667,6 +669,7 @@ jobs:
with:
suite_name: functions
timeout_minutes: 180
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
version: ${{ inputs.version }}
Expand All @@ -683,7 +686,7 @@ jobs:
with:
suite_name: iceberg
part: 1
timeout_minutes: 180
timeout_minutes: 300
storage_path: /iceberg
regression_args: '--only "/iceberg/iceberg engine/rest catalog/*" "/iceberg/s3 table function/*" "/iceberg/icebergS3 table function/*" "/iceberg/iceberg cache/*"'
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
Expand All @@ -703,7 +706,7 @@ jobs:
with:
suite_name: iceberg
part: 2
timeout_minutes: 180
timeout_minutes: 300
storage_path: /iceberg
regression_args: '--only "/iceberg/iceberg engine/glue catalog/*" "/iceberg/iceberg table engine/*"'
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
Expand Down Expand Up @@ -826,7 +829,7 @@ jobs:
with:
suite_name: ldap/role_mapping
job_name: ldap_role_mapping
timeout_minutes: 180
timeout_minutes: 360
artifact_name: ldap-role_mapping-artifacts
ref: ${{ inputs.ref }}
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax31-cax41' || 'type-cx53-cpx52' }}
Expand All @@ -844,8 +847,8 @@ jobs:
uses: ./.github/workflows/reusable-suite.yml
with:
suite_name: lightweight_delete
timeout_minutes: 180
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-ccx33' }}
timeout_minutes: 300
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
version: ${{ inputs.version }}
Expand All @@ -861,8 +864,8 @@ jobs:
uses: ./.github/workflows/reusable-suite.yml
with:
suite_name: memory
timeout_minutes: 180
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-ccx33' }}
timeout_minutes: 360
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
version: ${{ inputs.version }}
Expand All @@ -878,10 +881,10 @@ jobs:
uses: ./.github/workflows/reusable-suite.yml
with:
suite_name: parquet
timeout_minutes: 180
timeout_minutes: 300
storage_path: /no_s3
ref: ${{ inputs.ref }}
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-ccx33' }}
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
package: ${{ inputs.package }}
version: ${{ inputs.version }}
flags: ${{ inputs.flags }}
Expand Down Expand Up @@ -921,6 +924,7 @@ jobs:
storage_path: /aws_s3
regression_args: '--storage aws_s3 --aws-s3-bucket {{AWS_BUCKET}} --aws-s3-region {{AWS_REGION}} --aws-s3-key-id {{AWS_KEY_ID}} --aws-s3-access-key {{AWS_ACCESS_KEY}} --only "/parquet/aws s3/*"'
artifact_name: parquet-aws-artifacts
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
version: ${{ inputs.version }}
Expand Down Expand Up @@ -1012,7 +1016,7 @@ jobs:
uses: ./.github/workflows/reusable-suite.yml
with:
suite_name: rbac
timeout_minutes: 180
timeout_minutes: 300
part: 1
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
Expand All @@ -1030,7 +1034,7 @@ jobs:
uses: ./.github/workflows/reusable-suite.yml
with:
suite_name: rbac
timeout_minutes: 180
timeout_minutes: 300
part: 2
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
Expand All @@ -1048,7 +1052,7 @@ jobs:
uses: ./.github/workflows/reusable-suite.yml
with:
suite_name: rbac
timeout_minutes: 180
timeout_minutes: 300
part: 3
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
Expand Down Expand Up @@ -1291,7 +1295,7 @@ jobs:
storage_path: /minio
regression_args: '--storage minio'
artifact_name: s3-minio-artifacts
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax31-cax41' || 'type-cx53-cpx52' }}
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
version: ${{ inputs.version }}
Expand All @@ -1308,6 +1312,7 @@ jobs:
with:
suite_name: selects
timeout_minutes: 180
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
version: ${{ inputs.version }}
Expand Down Expand Up @@ -1356,7 +1361,7 @@ jobs:
with:
suite_name: ssl_server
part: 1
timeout_minutes: 180
timeout_minutes: 300
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-ccx33' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
Expand All @@ -1374,7 +1379,7 @@ jobs:
with:
suite_name: ssl_server
part: 2
timeout_minutes: 180
timeout_minutes: 300
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-cpx62' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
Expand All @@ -1392,7 +1397,7 @@ jobs:
with:
suite_name: ssl_server
part: 3
timeout_minutes: 180
timeout_minutes: 300
runner_type: ${{ inputs.arch == 'arm64' && 'type-cax41' || 'type-ccx33' }}
ref: ${{ inputs.ref }}
package: ${{ inputs.package }}
Expand Down Expand Up @@ -1447,7 +1452,7 @@ jobs:
with:
suite_name: tiered_storage
job_name: tiered_storage_gcs
timeout_minutes: 180
timeout_minutes: 360
storage_path: /gcs
regression_args: '--with-s3gcs --gcs-uri {{GCS_URI}} --gcs-key-id {{GCS_KEY_ID}} --gcs-key-secret {{GCS_KEY_SECRET}}'
artifact_name: tiered_storage-gcs-artifacts
Expand Down
22 changes: 19 additions & 3 deletions aggregate_functions/regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -872,17 +872,33 @@ def regression(
order_by="tuple()",
)

with And("I increase query timeouts for sanitizer builds"):
if check_with_any_sanitizer(self):
default_query_settings = getsattr(
current().context, "default_query_settings", []
)
# Sanitizer builds (ASAN/TSAN/MSAN/UBSAN) are 5-10x slower; the heavy
# INSERTs with all data types in `populate tables with test data`
# can exceed the default 120s wait_for_async_insert_timeout on slower
# CI runners. receive/send_timeout cover network-level waits;
# wait_for_async_insert_timeout covers the server-side async insert
# flush ack which is what actually trips first under sanitizers.
default_query_settings.append(("receive_timeout", 900))
default_query_settings.append(("send_timeout", 900))
default_query_settings.append(("wait_for_async_insert_timeout", 900))
self.context.default_query_settings = default_query_settings

with And("I populate tables with test data"):
self.context.table.insert_test_data(cardinality=1, shuffle_values=False)
self.context.table_extra_data.insert_test_data(
cardinality=5, shuffle_values=True
)

with And("allow higher cpu_wait_ratio "):
with And("allow higher cpu_wait_ratio (increased for sanitizer builds)"):
if check_clickhouse_version(">=25.4")(self):
allow_higher_cpu_wait_ratio(
min_os_cpu_wait_time_ratio_to_throw=20,
max_os_cpu_wait_time_ratio_to_throw=30,
min_os_cpu_wait_time_ratio_to_throw=50,
max_os_cpu_wait_time_ratio_to_throw=100,
)

with Feature("part 1"):
Expand Down
8 changes: 5 additions & 3 deletions aggregate_functions/tests/rankCorr.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from helpers.datatypes import Float64
from helpers.tables import is_numeric, common_columns, unwrap
from helpers.common import check_clickhouse_version, check_current_cpu
from helpers.common import check_clickhouse_version, check_current_cpu, check_with_tsan
from aggregate_functions.tests.steps import (
execute_query,
permutations_with_replacement,
Expand Down Expand Up @@ -68,8 +68,10 @@ def scenario(self, func="rankCorr({params})", table=None, snapshot_id=None):

with Check("with group by"):
snapshot_name_override = None
if "State" in self.name and "_binary" in getattr(
self.context, "clickhouse_path", ""
# TSAN produces same FP rounding as the binary build for rankCorrState.
if "State" in self.name and (
"_binary" in getattr(self.context, "clickhouse_path", "")
or check_with_tsan(self)
):
snapshot_name_override = (
current().name.replace("/part 3", "") + "_binary"
Expand Down
23 changes: 23 additions & 0 deletions alter/regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,29 @@ def argparser(parser):


xfails = {
# Data corruption bugs exposed by sanitizer builds
"/alter/attach partition/*": [
(
Fail,
"UNKNOWN_CODEC data corruption with sanitizers - needs investigation",
check_with_any_sanitizer,
)
],
"/alter/replace partition/*": [
(
Fail,
"UNKNOWN_CODEC data corruption with sanitizers - needs investigation",
check_with_any_sanitizer,
)
],
# Merge part UINT32_MAX overflow bug
"/alter/attach partition/*/optimize table * final/*": [
(
Fail,
"https://github.com/ClickHouse/ClickHouse/issues/69001 - Merge part UINT32_MAX overflow",
check_with_any_sanitizer,
)
],
"/alter/replace partition/concurrent merges and mutations/mutations on unrelated partition": [
(
Fail,
Expand Down
16 changes: 15 additions & 1 deletion base_58/regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,25 @@

from helpers.cluster import create_cluster
from helpers.argparser import argparser, CaptureClusterArgs
from helpers.common import check_clickhouse_version, experimental_analyzer
from helpers.common import check_clickhouse_version, experimental_analyzer, check_with_any_sanitizer

pr_70846 = "https://github.com/ClickHouse/ClickHouse/pull/70846"

xfails = {
# Memory-delta assertions incompatible with sanitizer allocators
# (b58_decode_memory_usage > 0 fails under ASAN/MSAN).
"/base58/memory usage/*": [
(
Fail,
"Memory-delta assertions incompatible with sanitizer allocators",
check_with_any_sanitizer,
),
(
Error,
"Memory-delta assertions incompatible with sanitizer allocators",
check_with_any_sanitizer,
),
],
"alias input/alias instead of table and column": [(Fail, "not implemented")],
"/base58/unsupported types constant/Nullable(FixedString(3))/*": [
(
Expand Down
8 changes: 3 additions & 5 deletions helpers/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -630,7 +630,7 @@ def enable_thread_fuzzer(self):
"export THREAD_FUZZER_pthread_mutex_unlock_AFTER_SLEEP_TIME_US=10000"
)

def wait_clickhouse_healthy(self, timeout=90, check_version=True, initial_delay=0):
def wait_clickhouse_healthy(self, timeout=600, check_version=True, initial_delay=0):
with By(f"waiting until ClickHouse server on {self.name} is healthy"):
for attempt in retries(
timeout=timeout, delay=5, initial_delay=initial_delay
Expand Down Expand Up @@ -782,7 +782,7 @@ def stop_clickhouse(self, timeout=300, safe=True, signal="TERM"):

def start_clickhouse(
self,
timeout=60,
timeout=600,
wait_healthy=True,
user=None,
thread_fuzzer=False,
Expand Down Expand Up @@ -843,9 +843,7 @@ def start_clickhouse(
timeout=timeout, check_version=check_version, initial_delay=2
)

def restart_clickhouse(
self, timeout=300, safe=True, wait_healthy=True, retry_count=5, user=None
):
def restart_clickhouse(self, timeout=600, safe=True, wait_healthy=True, retry_count=5, user=None):
"""Restart ClickHouse server."""
self.stop_clickhouse(timeout=timeout, safe=safe)

Expand Down
Loading
Loading