Skip to content

Antalya 26.8: auto-grp-pr-2184: combined port of 2 PRs - #2376

Open
zvonand wants to merge 4 commits into
antalya-26.8from
feature/antalya-26.8/auto-grp-pr-2184
Open

zvonand wants to merge 4 commits into
antalya-26.8from
feature/antalya-26.8/auto-grp-pr-2184

Conversation

@zvonand

@zvonand zvonand commented Sep 15, 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):

Add initial experimental support for S3 Tables through the Iceberg serverless REST catalog with SigV4 authentication, enabled by the allow_experimental_database_s3_tables setting. Add profile events that track requests to Iceberg REST, Glue, and Unity catalogs, including REST catalog authentication token requests.
Add initial experimental support for S3 Tables through the Iceberg serverless REST catalog with SigV4 authentication, enabled by the allow_experimental_database_s3_tables setting. Add profile events that track requests to Iceberg REST, Glue, and Unity catalogs, including REST catalog authentication token requests (#2184 by @zvonand, #2222 by @ianton-ru).

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-2184). Cherry-picked from #2184, #2222.

…next commit)

---
Original cherry-pick message follows:

Merge pull request #2184 from Altinity/feature/antalya-26.6/auto-grp-pr-1808

Antalya 26.6: S3 tables Iceberg support + catalog profile events
# Conflicts:
#	src/Common/ProfileEvents.cpp
#	src/Core/SettingsEnums.cpp
#	src/Core/SettingsEnums.h
#	src/Databases/DataLake/AWSV4Signer.cpp
#	src/Databases/DataLake/DatabaseDataLake.cpp
#	src/Databases/DataLake/GlueCatalog.cpp
#	src/Databases/DataLake/ICatalog.cpp
#	src/Databases/DataLake/RestCatalog.cpp
#	src/Databases/DataLake/RestCatalog.h
#	src/Databases/DataLake/S3TablesCatalog.cpp
#	src/Databases/DataLake/S3TablesCatalog.h
#	src/Databases/DataLake/tests/gtest_azure_abfss_parsing.cpp
#	src/IO/S3/URI.cpp
#	src/IO/S3/URI.h
antalya-26.8 already carries an independent, newer implementation of the
S3 Tables Iceberg REST catalog (S3TablesCatalog, AWSV4Signer,
DatabaseDataLakeCatalogType::S3_TABLES, S3 endpoint resolution as
DB::S3::expandRegionToAmazonPath), so the S3-Tables-specific halves of the
conflicts were resolved in favour of the base branch, and the catalog
profile events (PR #1868) were translated onto the base branch shapes:

- ProfileEvents.cpp: appended only the rows the source PR adds (the
  ObjectStorageCluster rows carried by 'theirs' are not in the PR diff).
- RestCatalog.cpp/.h: kept the base CatalogState-based createReadBuffer /
  sendRequest / getAuthHeaders signatures and added the event increments
  and timers around them.
- GlueCatalog.cpp: events added around the base call sites; existsTable
  now delegates to tryGetTableMetadata on the base branch, where the
  GetTable event is already counted.
- ICatalog.cpp / S3TablesCatalog.* / AWSV4Signer.cpp / SettingsEnums.*:
  base branch already implements the same behaviour.
- ICatalog.h: kept hasDataLakeSpecificProperties() declared, because
  antalya-26.8 defines TableMetadata::hasDataLakeSpecificProperties().
- gtest_s3_uri.cpp: renamed the source PR's resolveS3Endpoint() calls to
  the base branch name expandRegionToAmazonPath() (same implementation).

Source-PR: #2184 (#2184)
…next commit)

---
Original cherry-pick message follows:

Merge pull request #2222 from Altinity/feature/antalya-26.6/datalake-catalog-auth-token-profile-events

Antalya-26.6: Datalake catalog auth token profile events
# Conflicts:
#	src/Databases/DataLake/RestCatalog.cpp
#	src/Databases/DataLake/RestCatalog.h
#	src/Databases/DataLake/S3TablesCatalog.cpp
#	src/Databases/DataLake/S3TablesCatalog.h
#	tests/integration/test_database_iceberg_lakekeeper_catalog/test.py
Threaded the new `used_cached_oauth_token` out-parameter through
antalya-26.8's `getAuthHeaders(const CatalogState &, bool)` shape instead of
the source PR's `(bool, method, url, extra_headers, body)` shape, and kept
antalya-26.8's S3TablesCatalog network-primitive overrides (it has no
`getAuthHeaders` override to re-sign).

Adapted: getAuthHeaders signature - antalya-26.8 re-signatured the virtual to take a CatalogState snapshot and dropped the method/url/extra_headers/body parameters
Adapted: OneLakeCatalog::getAuthHeaders override - antalya-26.8-only override had to grow the new parameter to keep overriding
Adapted: S3TablesCatalog - antalya-26.8 overrides createReadBuffer/sendRequest instead of getAuthHeaders, so the source PR's signature change there is a no-op
Adapted: RestCatalog::sendRequest - kept antalya-26.8's X-Iceberg-Access-Delegation header and withOutCallbackFixedContentLength while adopting the PR's create_buffer/retry restructuring
Adapted: added the IntegerType pyiceberg import the source PR's new test needs (present on the source branch via tests not on antalya-26.8)
Source-PR: #2222 (#2222)

Adapted: test_auth_token_profile_events - the source PR's helper read ProfileEvents
    names ('...AuthTokenRefreshed', '...AuthTokenCacheHits') that the PR's own
    ProfileEvents.cpp does not define; switched to the events the ported code emits
    ('...AuthTokenRetrieve', '...AuthTokenCachedValid')
Adapted: test_auth_token_profile_events - DatabaseDataLake on antalya-26.8 builds the
    catalog eagerly on CREATE DATABASE (only ATTACH is lazy), so the first token fetch
    is attributed to the CREATE query; the assertions now check the retrieve on the
    CREATE query and cache hits on the following SHOW TABLES queries
Adapted: dropped the body-less test_vended_credentials_cache stub - upstream it is
    shadowed by the full test of the vended-credentials cache, which is not part of
    this PR and is not on antalya-26.8, so here it would have been a no-op test

Adapted: gtest_s3_uri.cpp IOTestS3URI.ResolveS3Endpoint - antalya-26.8's
    expandRegionToAmazonPath() resolves the endpoint through the AWS SDK endpoint
    provider, which aborts (aws-c-common: "allocator && aws_byte_cursor_is_valid")
    unless the SDK has been initialized; the test now initializes it via
    S3::ClientFactory::instance() (as gtest_aws_s3_client.cpp does) so it passes when
    run on its own instead of only after some other test happened to init the SDK.
@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 Sep 15, 2026
@github-actions

Copy link
Copy Markdown

Workflow [PR], commit [18782d3]

@zvonand zvonand mentioned this pull request Sep 15, 2026
27 tasks
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