Stable 25.8: Bump to 25.8.30 - #2225
Conversation
…yBuilder via incorrect string escaping
…on in JOIN ON with new logical join step
…ettings absent on 25.8 The backport of ClickHouse#104785 (ClickHouse#108444) cherry-picked the master regression test verbatim. Two of its control queries use settings that do not exist on 25.8 — `enable_join_runtime_filters` and `use_join_disjunctions_push_down` — so the test aborts with `UNKNOWN_SETTING` on 25.8. Those optimizations are absent on 25.8, so the "off" controls are redundant with the baseline anyway; drop them and their reference lines. The core fix assertions (ON-side arrayJoin ghost removed: count = 6 not 18, ARRAY-JOIN plan count = 1 not 2) and the bilateral both-side cases are kept. Verified the test passes against a locally-built 25.8 `clickhouse` binary. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…oin-test-25.8 Fix 03918 arrayJoin-join-on test on 25.8: drop query variants using settings absent on 25.8
…n cluster queries
…ing `RemoteHostFilter` for inline DDL params
…able function
…UMN and merge causing data loss (ClickHouse#80648)
…4881 Backport ClickHouse#104881 to 25.8: Use explicit flag for secondary on cluster queries
…or DataLakeCatalog
…_log for paimon*Cluster and deltaLakeS3 t…
…4785 Backport ClickHouse#104785 to 25.8: Fix duplicate `arrayJoin` execution in JOIN ON with new logical join step
…8509 Backport ClickHouse#108509 to 25.8: Match http_forbid_headers case-insensitively
The new auth_header validation rejects values not in 'HeaderName: HeaderValue' format. test_database_hms/test.py exists only on 25.8 (not master), so the original PR never updated its test_hide_sensitive_info, leaving it with an invalid auth_header. Apply the same fix as the other catalog test files. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…wo-level parallel merge
…COM_FIELD_LIST and COM_INIT_DB
…9389 Backport ClickHouse#109389 to 25.8: Fix TSan data race in uniqExact two-level parallel merge
…4822 Backport ClickHouse#104822 to 25.8: Fix race between ALTER RENAME COLUMN and merge causing data loss (ClickHouse#80648)
`used_privileges` (and `missing_privileges`) rows in `system.query_log`
could contain privilege strings from completely unrelated earlier queries
of a different user, database, and session that had finished much earlier.
`Context::makeQueryContext` seeded the new query's `QueryPrivilegesInfo`
by copying the contents of the parent context's object:
query_privileges_info = std::make_shared<QueryPrivilegesInfo>(*query_privileges_info);
The parent is the session (or global) context. Session contexts are
created via `createCopy(global_context)` and never call `makeQueryContext`,
so the session and global contexts share a single `QueryPrivilegesInfo`
object. Any privilege string that ever landed in that shared object — and
partial state observed when the copy raced a concurrent writer — leaked
into the `used_privileges` of unrelated later queries. The one-directional
spread and the 1-2 partial entries per polluted row match a copy-vs-write
race against this shared object.
A new query has checked no privileges yet, so there is nothing legitimate
to inherit. Seed every query with an empty `QueryPrivilegesInfo`. Child
contexts created via `createCopy` still share the query's object, so
sub-operations correctly contribute to the same query's `used_privileges`.
Added a deterministic unit test `MakeQueryContextDoesNotInheritPrivileges`
that pollutes a parent context's privileges, derives a query context, and
asserts the query starts clean and that its checks do not bleed back into
the parent.
Closes: ClickHouse#105983
CI report:
https://s3.amazonaws.com/clickhouse-test-reports/json.html?REF=master&sha=fa6d98d95368955ee5619a28a21527da7a9b83cb&name_0=MasterCI&name_1=Stateless%20tests%20%28amd_asan_ubsan%2C%20distributed%20plan%2C%20parallel%2C%202%2F2%29
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(cherry picked from commit 3a3c454)
# Conflicts:
# src/Interpreters/tests/gtest_context_race.cpp
…8508 Backport ClickHouse#108508 to 25.8: Enforce access control for MySQL COM_FIELD_LIST and COM_INIT_DB
Backport ClickHouse#98827 to 25.8: Implement http header validation for DataLakeCatalog
…0529 Backport ClickHouse#100529 to 25.8: Fix: fix Credential leak in query_log for paimon*Cluster and deltaLakeS3 t…
…7675 Backport ClickHouse#107675 to 25.8: fix column order for distributed alias columns
…9874 Backport ClickHouse#109874 to 25.8: Bump libarchive from 3.8.7 to 3.8.8
… of temporary tables in `Merge`
Backport ClickHouse#88573 to 25.8: test: fix flakiness of test_async_load_databases (pushing to MV reordered and lack of proper cleanup)
…3224 Backport ClickHouse#113224 to 25.8: Do not read the internal database of temporary tables in `Merge`
…9675 Backport ClickHouse#109675 to 25.8: Fix segfault due to bad shutdown ordering on startup exception
…n sorted path order
Fixes 10 CVEs from the curl 8.21.0 security disclosure that apply to our build (connection reuse, cookie handling, proxy/Digest auth, mTLS matching, WebSocket support). Updated curl-cmake/CMakeLists.txt for curl 8.21.0's source layout: lib/noproxy.c was removed upstream (logic moved into new lib/proxy.c); also added cf-recvbuf.c, cf-setup.c, creds.c, peer.c, and vtls/vtls_config.c. Verified: ninja _curl builds and links clean.
… large kafka_num_consumers
Bump curl to 8.21.0
…2601 Backport ClickHouse#112601 to 25.8: Iterate ColumnObject subcolumns in sorted path order
…2784 Backport ClickHouse#112784 to 25.8: Fix startup and ATTACH of a view with a recursive CTE with the old analyzer
…3390 Backport ClickHouse#113390 to 25.8: Fix ATTACH of Kafka tables with a large kafka_num_consumers
Release v25.8.30.16-lts
The harness always puts `--send_logs_level=<level>` into $CLICKHOUSE_CLIENT (tests/queries/shell_config.sh), so the explicit `--send_logs_level fatal` made the client reject the command line with "option '--send_logs_level' cannot be specified more than once". clickhouse-test only injects `--allow_repeated_settings` when settings randomization produced options, so this failed in Fast test, which runs with --no-random-settings.
04299_deltalake_local_path_traversal: pass --allow_local_data_lakes=1 to clickhouse-local, otherwise deltaLakeLocal is rejected with SUPPORT_IS_DISABLED before the path-containment check is reached, so the test never observed PATH_ACCESS_DENIED. 03918_arrayjoin_join_on_duplicate_execution: tag no-old-analyzer. The old analyzer rejects arrayJoin() in JOIN ON with INVALID_JOIN_ON_EXPRESSION, and query_plan_use_new_logical_join_step only exists on the analyzer path. 04510_s3_explicit_url_named_secret_mask: tag no-replicated-database. Its final assertion dumps every query_log row of the database in order, and a Replicated database logs an extra row per DDL from the internal DDL-worker execution.
CI triage — 3 red checks: 1 real & PR-related (trivial fix), 1 policy (DCO), 1 aggregateHead SHA
1. Stateless / DatabaseReplicated —
|
CI triage for #2225 (bump to 25.8.30)Verdict: 4 red checks, 0 product regressions. 1 is a PR-related test-stability issue (no product impact), 2 are inherent-to-a-bump / infra, and the
Everything else is green: all builds, Fast test (6940 passed), stateless/AST-fuzzer/BuzzHouse, the other 4 integration shards (1/5, 2/5, 3/5, 5/5 — their 1. Integration tests (amd_binary, 4/5) — PR-related test, but no crash / no regressionOnly one real failure in the shard ( What it is. This test is new in this PR — it arrives with the straight upstream backport Why it's not a regression. The test guards against a server abort. In the log the server stays alive the whole time ( Why the assertion is fragile. The test has to make two things land in the same listing batch: (1) a file made non-processable via the Suggested fix. Since the product code is correct (no crash), don't block the bump on the test's reproduction race. Two options:
I'd lean on the quarantine for the release bump. Happy to prepare it — see the delivery note at the bottom. 2. DCO — expected for a bump, not actionable by meDCO reports 87 commits "incorrectly signed off" — e.g. 3. GrypeScanServer (-alpine) — base-image finding, not this diffThe alpine server image scan fails with 1 HIGH: DeliveryThe mention didn't specify how you want the fix delivered, so I haven't pushed anything. The only PR-related item worth a code change is the
If instead you'd rather I try to stabilize the test itself (option under §1) or dig further into the alpine CVE package, say the word. Evidence: praktika |
|
Investigated. Short version: this is a flaky reproduction timeout in a newly-added timing-sensitive test, not a real regression, and nothing about the stable-25.8 bump makes it behave differently from #2224. The code the test exercises is byte-identical on both branches. What actually failed (it did not crash)The one failing test on Throughout all 120 retries the That reproduction is inherently probabilistic: it needs the failpoint-skipped file and the pre-created keeper conflict node to land in the same listing batch, with Why 2224 is green and 2225 is red — same code, different luckBoth PRs are the 25.8.30 bump and both contain the same commit that added this test together with its fix:
Diffing the entire engine directory between the two PR heads: Those are the only differences, and every hunk is cosmetic API adaptation ( So the pass/fail difference cannot come from a code difference in the tested path. It is the same probabilistic reproduction resolving favorably on 2224 and unfavorably on this run of 2225. (For what it's worth, 2224's integration jobs are currently re-running / pending, so its own result is being regenerated too.) Recommendation
Evidence: failing test log |
|
@blau-ai maybe mark this test_batch_set_processing_failure_does_not_crash as flaky? |
|
@zvonand Confirmed it's flaky, and I agree it should be marked. Here's the evidence and a proposed change. What's failingOnly one test fails on this PR, in Integration tests (amd_binary, 4/5) ( Why it's flaky (not a real regression)The test waits for the Proposed changeMechanism used here for flaky integration tests is --- a/tests/broken_tests.yaml
+++ b/tests/broken_tests.yaml
@@ -116,6 +116,9 @@
- name: test_storage_s3_queue/test_4.py::test_list_and_delete_race
reason: 'KNOWN - Unstable upstream'
message: AssertionError
+- name: test_storage_s3_queue/test_parallel_inserts.py::test_batch_set_processing_failure_does_not_crash
+ reason: 'KNOWN - Flaky: crash-repro batch not always scheduled within the retry window'
+ message: did not match expectations in 120 retries
- name: test_storage_s3_queue/test_5.py::test_failed_startup
reason: 'INVESTIGATE: Unstable on tsan'
check_types:The How would you like it delivered?Per my push policy I don't push without an explicit choice, so tell me which you want:
Reply with 1 or 2 (or "no message" if you also want the unconditional variant) and I'll apply it. |
|
@blau-ai into this branch |
The crash-repro batch in this test is not always scheduled within the 120-retry window, causing a setup timeout (not a crash) in Integration tests. The message filter keeps a genuine out-of-bounds crash regression failing the job while tolerating the timing-dependent reproduction miss. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Done — committed directly to this branch ( Commit: --- a/tests/broken_tests.yaml
+++ b/tests/broken_tests.yaml
@@ -116,6 +116,9 @@
- name: test_storage_s3_queue/test_4.py::test_list_and_delete_race
reason: 'KNOWN - Unstable upstream'
message: AssertionError
+- name: test_storage_s3_queue/test_parallel_inserts.py::test_batch_set_processing_failure_does_not_crash
+ reason: 'KNOWN - Flaky: crash-repro batch not always scheduled within the retry window'
+ message: did not match expectations in 120 retries
- name: test_storage_s3_queue/test_5.py::test_failed_startup
reason: 'INVESTIGATE: Unstable on tsan'
check_types:The CI will re-run on the new head; the previously-failed |
Changelog category (leave one):
CI/CD Options
Exclude tests:
Regression jobs to run: