Skip to content

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

Merged
zvonand merged 5 commits into
antalya-26.8from
feature/antalya-26.8/auto-grp-pr-2184
Sep 18, 2026
Merged

zvonand merged 5 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

github-actions Bot commented Sep 15, 2026

Copy link
Copy Markdown

Workflow [PR], commit [d746191]

@zvonand zvonand mentioned this pull request Sep 15, 2026
27 tasks
@zvonand

zvonand commented Sep 18, 2026

Copy link
Copy Markdown
Member Author

@blau-ai

@blau-ai

blau-ai commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

CI triage

1 failing check: 0 PR-caused, 1 infra/flaky (wall-clock timeout). Everything else is green or correctly skipped. This PR does not need a code change to fix CI — the one red check is a slow-runner timeout in a suite your diff doesn't touch.

❌ SQLLogic test — infra / timeout, not PR-caused

Decisive log lines (job.log):

[2026-09-17 21:12:41] Run statements-test
[2026-09-17 22:10:20] Run complete-test          # statements-test took ~58 min
[2026-09-18 00:12:11] WARNING: Timeout exceeded [10800] for [2680]
[2026-09-18 00:12:16] WARNING: Job timed out: [SQLLogic test], timeout [10800], exit code [-15]
[2026-09-18 00:12:16] ERROR: Run failed with exit code [-15]

This is a hard 3-hour job timeout (10800s, SIGTERM→SIGKILL, exit code -15) during the generic complete-test phase — not a test-assertion failure. self-test and statements-test both completed; complete-test was simply cut off mid-run. The praktika report has no nested per-test failures, consistent with a killed job rather than real test diffs.

Why it's not this PR: the diff is confined to DataLake/Iceberg/S3Tables catalog code, Settings/SettingsChangesHistory, ProfileEvents, two gtests, and one Iceberg integration test — none of which is exercised by the sqllogictest suite (it runs generic SQL and diffs against SQLite).

Why it's a borderline-timeout / infra issue: the last merged PR into the base branch antalya-26.8 (#2358) ran the same suite to OK in 8,488s (~2h21m) — i.e. it normally finishes only ~40 min under the 3h ceiling. On this PR the runner was slower (statements-test alone took 58 min), which pushed complete-test past the limit. (For reference, #2358 passed with failed tests 157,622 <= maximum 174,004 — a large tolerated diff count is normal for this suite; wall-clock is the only thing that broke here.)

Suggested next step: re-run just the SQLLogic test job — a normal-speed runner should finish inside 3h. If it keeps timing out on this branch, that's a CI-config matter (the suite is chronically close to its 10800s budget on antalya-26.8), not something to fix in this PR — the timeout would need bumping, or complete-test sharding, independently of #2376.

✅ Everything else

All builds (amd/arm debug/binary/release, wasm_parser), Fast test, Quick functional tests, Stateless tests (amd_debug parallel+sequential, distributed-plan s3, arm_binary), AST fuzzer, BuzzHouse, and Compatibility check are green. The AST fuzzer / BuzzHouse "Fuzzer exited with timeout" notes are their normal success message, not failures. The MSAN/TSAN/UBSAN/Coverage jobs are skipped by design (unchecked in the PR's CI options).

Health check

CI on #2376 is effectively green: the port builds cleanly on all targeted platforms and passes functional/stateless/fuzzer coverage. The sole red mark is an environmental 3-hour timeout in a suite unrelated to the change. Recommend re-running SQLLogic test; no code change to this PR is warranted for it.

@zvonand
zvonand merged commit 24db9b3 into antalya-26.8 Sep 18, 2026
318 of 321 checks passed
@zvonand zvonand added the port-antalya PRs to be ported to all new Antalya releases label Sep 18, 2026
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 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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants