8000 Antalya 26.8: port the CAS PRs merged into antalya-26.6 after the PR 2540 cut by filimonov · Pull Request #2805 · Altinity/ClickHouse · GitHub
[go: up one dir, main page]

Skip to content

Antalya 26.8: port the CAS PRs merged into antalya-26.6 after the PR 2540 cut - #2805

Open
filimonov wants to merge 17 commits into
antalya-26.8from
port/antalya-26.8/cas-from-26.6
Open

filimonov wants to merge 17 commits into
antalya-26.8from
port/antalya-26.8/cas-from-26.6

Conversation

@filimonov
@filimonov 8000 filimonov commented Nov 6, 2026
Copy link
Copy Markdown
Member

Port to antalya-26.8 of the eleven CAS PRs that landed on antalya-26.6 after the cut of the combined port #2540 (26.6 after PR 2437 plus 2509-2511). One commit per source PR, cherry-picked from the PR merge commit; conflict notes are in the commit messages. Four follow-up commits adapt the picks to 26.8 (ProfileEvents counter reads without .load(), a missing include, the order of the mount-lease sections in docs/en/antalya/cas/configuration.md).

Ported, in merge order (source category in brackets):

Resolved by hand against the 26.8-only code:

  • 2555: copyS3File.cpp routes both entry points through copyS3FileImpl on 26.8; the object-creation client is threaded through it, copyS3FileRange passes none. WriteBufferFromS3.cpp keeps the 26.8 transient-error branch. CasPartWriteTxn.cpp uses Cas::nowMs.
  • 2567: CasOrphanManifestSweep.cpp and CasDecommission.cpp against Fix early manifest deletion in CAS GC #2730 (BuildFloor sentinel and the renamed eligibility helper kept).
  • 2516: configuration.md lease paragraphs next to the Packed section; the new gtest_ca_wiring.cpp test after the owner-Move tests.

Not ported on purpose: the no-cas-storage tags of the EXPORT PART stateless tests, which 26.8 removed in 5a1ffb2 ("Allow every partition command, EXPORT PART included, on a CAS disk").

Local check: release unit_tests_dbms --gtest_filter='CAS*' 2904 passed, 0 failed.

Related: #2644
Related: #2540

Changelog category (leave one):

  • Critical Bug Fix (crash, data loss, RBAC)

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

CAS (content-addressed storage): port the antalya-26.6 fixes and improvements merged after the combined port: a blob is adopted only when its marker reads Clean; an object-creating S3 request is never resent; a mount slot is claimed only with a strictly greater epoch and after the holder's declared lease; lease renewal continues until a definitive answer; renewal progress is shown in system.cas_mounts; nested server_root_id values are refused; decommission keeps a member's control objects and a decommissioned server root rejoins on start; custom disks are created outside storage_policies_mutex.

Documentation entry for user-facing changes

  • Documentation written: docs/en/antalya/cas/ carried over from the source PRs.

CI/CD Options

Exclude tests:

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

Regression jobs to run:

  • Fast suites (mostly <1h)
  • Aggregate Functions (2h)
  • Alter (1.5h)
  • Benchmark (30m)
  • CAS (content-addressed storage; Antalya only)
  • ClickHouse Keeper (1h)
  • Iceberg (2h)
  • LDAP (1h)
  • OAuth (5m)
  • Parquet (1.5h)
  • RBAC (1.5h)
  • SSL Server (1h)
  • S3 (2h)
  • S3 Export (2h)
  • Swarms (30m)
  • Tiered Storage (2h)

filimonov and others added 15 commits November 6, 2026 03:02
Port of #2512 (antalya-26.6) to antalya-26.8.

(cherry picked from commit 2a034cd)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Port of #2552 (antalya-26.6) to antalya-26.8.

Conflict: `src/Disks/tests/gtest_cas_part_write.cpp`, counter reads without `.load()` as on antalya-26.8.

(cherry picked from commit fef96d5)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Port of #2513 (antalya-26.6) to antalya-26.8.

(cherry picked from commit c147de3)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
…aiming its slot

Port of #2516 (antalya-26.6) to antalya-26.8.

Conflicts: `docs/en/antalya/cas/configuration.md` (the lease-liveness paragraph replaces the old
"All servers sharing a pool" one and sits before the antalya-26.8 `Packed` section),
`src/Disks/tests/gtest_ca_wiring.cpp` (new test appended after the owner-Move tests).

(cherry picked from commit 21b7170)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
…ite test

On antalya-26.8 `ProfileEvents::Counters::operator[]` returns the value, so the two reads
that came with the port of #2552 did not compile.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Port of #2555 (antalya-26.6) to antalya-26.8.

Conflicts: `src/IO/S3/copyS3File.cpp` (antalya-26.8 routes `copyS3File` and `copyS3FileRange` through
`copyS3FileImpl`; the object-creation client is threaded through it, the ranged copy passes none),
`src/IO/WriteBufferFromS3.cpp` (the 26.8 transient-error branch is kept and says "will retry" only
when a retry follows), `Pool/CasPartWriteTxn.cpp` (no local `nowMs`, `CasClock.h` has it),
`docs/en/antalya/cas/configuration.md` (settings table rows).

(cherry picked from commit 8fefc27)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
… is a pause

Port of #2517 (antalya-26.6) to antalya-26.8.

(cherry picked from commit 9e54034)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
…tionable member refusals

Port of #2566 (antalya-26.6) to antalya-26.8.

(cherry picked from commit af662dc)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
…och nonce

Port of #2567 (antalya-26.6) to antalya-26.8.

Conflicts with the PR 2730 port already on antalya-26.8: `Gc/CasOrphanManifestSweep.cpp` (keeps the
`BuildFloor` sentinel test and the renamed eligibility helper; `sweepNamespace` admits through
`mountRequests` as this PR does), `Tools/CasDecommission.cpp` (PR 2730 comment kept; the old slot-removal
tail goes as in this PR).

(cherry picked from commit 9b348cf)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Port of #2594 (antalya-26.6) to antalya-26.8.

(cherry picked from commit 6a1085e)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Port of #2574 (antalya-26.6) to antalya-26.8.

(cherry picked from commit 11ab9a4)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Port of #2573 (antalya-26.6) to antalya-26.8.

(cherry picked from commit 52c95e2)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
The `Packed` parts subsection sat between the settings table and the lease-liveness prose; it now
follows that prose, so the three lease paragraphs read in the antalya-26.6 order.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
…AS tests

Same cause as 78de57b: on antalya-26.8 `ProfileEvents::Counters::operator[]` returns the value.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
On antalya-26.8 no other header of the test pulls it in transitively.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
@github-actions
github-actions Bot commented Nov 6, 2026 •
Copy link
Copy Markdown

Workflow [PR], commit [a2147e5]

k-morozov
k-morozov previously approved these changes Nov 6, 2026
… death test

On antalya-26.8 the ranged copy is `copyS3FileRange`; `copyS3File` has no
`src_offset` parameter. The call sits under `DEBUG_OR_SANITIZER_BUILD`,
which the release build does not compile.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
k-morozov
k-morozov previously approved these changes Nov 6, 2026
…be file

Every disk probes its access with the same file name, clickhouse_access_check_<server uuid>.
Since custom disks are created outside storage_policies_mutex
(#2573), two tables whose custom disks sit on one
backing disk are started in parallel at server start, and their probes overwrite and unlink
each other's file: the tables fail to attach with FILE_DOESNT_EXIST "While checking access
for disk ...". Seen in test_filesystem_cache on
#2805 (tables test and test_size_in_name, cache
disks over hdd_blob). A process-wide mutex around the probe; config disks are created one
after another anyway.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0