Skip to content

Antalya 26.8: Antalya-26:6 - iceberg v3: rewriteFiles - Added logic to merge small files into bins - #2737

Open
zvonand wants to merge 2 commits into
antalya-26.8from
feature/antalya-26.8/pr-2420
Open

zvonand wants to merge 2 commits into
antalya-26.8from
feature/antalya-26.8/pr-2420

Conversation

@zvonand

@zvonand zvonand commented Oct 29, 2026

Copy link
Copy Markdown
Member

Changelog category (leave one):

  • New Feature

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

Implement bin-packingReWriteFiles operation that Identifies small data files below a target size threshold(defined in Settings), groups them and merges to a large file, creates a snapshot that marks the old ones as DELETED and the new larger merge file as ADDED.

Leave all other files, manifests, and history untouched (#2420 by @subkanthi).

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)

Cherry-picked from #2420.

…next commit)

---
Original cherry-pick message follows:

Merge pull request #2420 from Altinity/iceberg_rewrite_files_compaction

Antalya-26:6 - iceberg v3: rewriteFiles - Added logic to merge small files into bins
# Conflicts:
#	src/Storages/ObjectStorage/DataLakes/Iceberg/Compaction.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergMetadata.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergWrites.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/IcebergWrites.h
#	src/Storages/ObjectStorage/DataLakes/Iceberg/Utils.cpp
#	src/Storages/ObjectStorage/DataLakes/Iceberg/Utils.h
Kept base `overwriteIsPositionDeleteOnly` check in `tryGetAppendUpdate`.
Kept the `CLICKHOUSE_CLOUD` branch of `IcebergMetadata::optimize`, with the
PR's bin-pack logic in the `#else` branch.

Adapted: `IcebergMetadata::optimize` uses `external_storages` (renamed from `secondary_storages` on antalya-26.8)
Adapted: `ManifestListEntryCounts` keeps base `added_snapshot_id`/`added_sequence_number`; base `counts_are_added` callers in `Compaction.cpp` translated to added_*/existing_* counts
Adapted: `tryWriteMetadataFileAndVersionHint` takes base `version_hint_names_metadata_file` out-param and keeps base hint-retry warning and `UNSUPPORTED_METHOD` rethrow
@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 29, 2026
@github-actions

Copy link
Copy Markdown

Workflow [PR], commit [4c9f515]

@zvonand zvonand mentioned this pull request Oct 29, 2026
59 tasks done

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

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 releasy Created/managed by RelEasy

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant