Skip to content

Antalya 26.8: auto-grp-pr-2378: combined port of 2 PRs - #2487

Merged
zvonand merged 5 commits into
antalya-26.8from
feature/antalya-26.8/auto-grp-pr-2378
Oct 7, 2026
Merged

zvonand merged 5 commits into
antalya-26.8from
feature/antalya-26.8/auto-grp-pr-2378

Conversation

@zvonand

@zvonand zvonand commented Oct 6, 2026

Copy link
Copy Markdown
Member

Changelog category (leave one):

  • Improvement

Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):

Add an Antalya-specific protocol version that the server advertises in the ServerHello and the client advertises in the Hello. It uses no upstream protocol-version slot and still works with older clients and servers.
Add an Antalya-specific protocol version that the server advertises in the ServerHello and the client advertises in the Hello. It uses no upstream protocol-version slot and still works with older clients and servers (#2378 by @zvonand, #2451 by @zvonand).

CI/CD Options

Exclude tests:

  • Fast test
  • Integration Tests
  • Stateless tests
  • Stateful tests
  • Performance tests
  • All with ASAN
  • All with TSAN
  • All with MSAN
  • All with UBSAN
  • All with Coverage
  • All with Aarch64
  • All Regression
  • Disable CI Cache

Regression jobs to run:

  • Fast suites (mostly <1h)
  • Aggregate Functions (2h)
  • Alter (1.5h)
  • Benchmark (30m)
  • ClickHouse Keeper (1h)
  • Iceberg (2h)
  • LDAP (1h)
  • Parquet (1.5h)
  • RBAC (1.5h)
  • SSL Server (1h)
  • S3 (2h)
  • S3 Export (2h)
  • Swarms (30m)
  • Tiered Storage (2h)

Combined port of 2 PR(s) (group auto-grp-pr-2378). Cherry-picked from #2378, #2451.

…next commit)

---
Original cherry-pick message follows:

Merge pull request #2378 from Altinity/feature/antalya-26.6/antalya-protocol-version

Antalya 26.6: Add an Antalya-only protocol version advertised in the `ServerHello`
# Conflicts:
#	src/Server/TCPHandler.cpp
…ion-followup

Advertise the Antalya protocol version in the client `Hello`

Source-PR: #2451 (#2451)
@zvonand zvonand added releasy Created/managed by RelEasy antalya-26.8 Session label (releasy session config) forwardport This is a frontport of code that existed in previous Antalya versions ai-resolved Port conflict auto-resolved by Claude labels Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Workflow [PR], commit [179c3f7]

@zvonand zvonand mentioned this pull request Oct 6, 2026
52 tasks done
@zvonand

zvonand commented Oct 7, 2026

Copy link
Copy Markdown
Member Author

@blau-ai

@blau-ai

blau-ai commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator

CI triage

Verdict: CI is red, but 0 of the failures are caused by this PR. Every failing check is pre-existing / infra / flaky, and I can show the same failures on an unrelated PR against the same base. The PR's own relevant surface (builds, fast test, stateless amd/arm, integration incl. distributed-plan, stress, fuzzers) is green.

Key cross-check: #2488 (a transaction-metadata change that touches none of the protocol code) shows the identical Grype results, the identical "Parser memory check 1/2", and the identical swarm failure counts/scenarios — so these live on antalya-26.8, not here.

Check Verdict Why
Grype Scan (keeper / server / server-alpine) not PR-caused — infra Base-image CVE scan
Parser memory check not PR-caused — infra Missing master baseline artifact
Regression swarms (aarch64 + release) not PR-caused — pre-existing Connection/socket-timeout swarm tests, same on #2488
Stateless tests (arm_binary, parallel) not PR-caused — flaky 1 unrelated flaky test, 21/21 reruns passed, non-blocking

Per-failure detail

1. Grype Scan — keeper (4 high/critical), server-alpine (1 high/critical), server (0)
These are vulnerability scans of the published Docker images, i.e. CVEs in the base OS/packages. This PR only changes C++ handshake code and some tests — it cannot add or remove image CVEs. The identical counts appear on #2488. Pre-existing/infra; not PR-caused. Next step: handle via the usual image-CVE process, independent of this PR.

2. Parser memory check — ERROR
Sub-step Resolve master binary → No master 'clickhouse-examples' artifact was found. The job needs the master/baseline clickhouse-examples build to diff memory against, and that artifact wasn't available. Same ERROR on #2488. Infra/dependency, not a regression. Next step: safe to re-run once the baseline artifact exists; nothing to fix in the PR.

3. Regression swarms (aarch64 + release) — 3 failed scenarios
The failed scenarios are:

  • cluster discovery/check cluster discovery with wrong cluster name — ALL_CONNECTION_TRIES_FAILED (expected exit 23, got 33)
  • node failure/cpu overload — SOCKET_TIMEOUT (receive timeout 300000 ms) While executing Remote
  • node failure/cpu overload all swarm nodes — SOCKET_TIMEOUT … While executing Remote

These touch "connection"/"remote" in the error text, which is worth a careful look given this PR edits the handshake — but the evidence says it's not this PR:

  • The exact same 3 scenarios fail identically on Antalya 26.8: Retry transaction metadata writes under noexcept callbacks instead of terminating #2488, which doesn't touch the protocol → they predate this PR on antalya-26.8.
  • The change here is purely additive to the Hello name string (append/parse " (antalya:N)"); it doesn't alter replica selection, timeouts, or error codes, and an unmarked peer is handled gracefully (parseMarker → 0).
  • Integration tests (arm_binary, distributed plan) passed 0/7614 — those exercise exactly the server↔server remote handshake this PR modifies. If the marker broke remote connections, they'd fail in bulk.
  • The PR's new test_antalya_protocol (negotiation over remote(), including against an old unmarked node) is in that green integration run.

The two cpu overload scenarios are socket timeouts under deliberate CPU stress — classic infra flakiness. Pre-existing/infra; not PR-caused. Next step: safe to re-run; track with the swarm-regression flakiness, not this PR.

4. Stateless tests (arm_binary, parallel) — Failed: 1
04218_limit_by_partitions_independently — an EXPLAIN PIPELINE diff (Resize/ReadPool,Thread vs Concat/ReadPoolInOrder,InOrder), i.e. MergeTree read-order nondeterminism. CI labeled it flaky and its own rerun diagnosis passed 21/21 ("not reproducible, likely transient"). The check is marked non-blocking (do_not_block_pipeline_on_failure). The test is about LIMIT BY partition reading and has nothing to do with the protocol handshake. Flaky; not PR-caused. Next step: re-run / ignore.


PR health check

The change is clean and well-scoped: it adds a self-contained DBMS_ANTALYA_PROTOCOL_VERSION advertised as a " (antalya:N)" suffix in the Hello/ServerHello name, parsed back with min(own, peer) and ignored by non-Antalya peers (parseMarker → 0). The compatibility-sensitive paths all passed: Fast test, every Build variant, stateless amd_debug (parallel + sequential) and arm_binary sequential, integration tests incl. distributed-plan (remote handshake) with 0 failures, stress tests, and both AST/BuzzHouse fuzzers. The new unit test (gtest_antalya_protocol) and integration test (test_antalya_protocol, which covers new↔old node negotiation and the unmarked-worker case) back up the backward-compat claims. I'd consider this green on the merits — the red checks are all base-branch/infra noise. Re-running the swarms and Parser-memory jobs is the only cleanup, and neither needs a code change.

🤖 Automated triage by @blau-ai. Evidence: praktika result_pr.json, swarms report.html, and a cross-check against #2488. I can't build/run ClickHouse — correctness is ultimately confirmed by CI.

@zvonand zvonand added the verified Approved for release label Oct 7, 2026
@zvonand
zvonand merged commit 0d8f010 into antalya-26.8 Oct 7, 2026
308 of 323 checks passed
@zvonand zvonand added the port-antalya PRs to be ported to all new Antalya releases label Oct 7, 2026
zvonand added a commit that referenced this pull request Oct 12, 2026
The cherry-pick of ClickHouse#90740 took upstream's
`DBMS_CLUSTER_PROCESSING_PROTOCOL_VERSION` slot 12 for sending the Iceberg delete-file paths as
absolute URIs in the cluster read-task payload. Antalya versions its own wire changes with
`DBMS_ANTALYA_PROTOCOL_VERSION`, negotiated per connection in the `Hello`
(#2487), so the upstream bump is undone and the change is
gated on Antalya protocol version 2 instead. The negotiated version of the worker is passed from
`Connection` through `ClusterFunctionReadTaskResponse::serialize` to
`IcebergObjectSerializableInfo::serializeForClusterFunctionProtocol`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-resolved Port conflict auto-resolved by Claude antalya-26.8 Session label (releasy session config) forwardport This is a frontport of code that existed in previous Antalya versions port-antalya PRs to be ported to all new Antalya releases releasy Created/managed by RelEasy verified Approved for release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants