Antalya 26.8: auto-grp-pr-2184: combined port of 2 PRs - #2376
Conversation
…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.
CI triage1 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-causedDecisive log lines (job.log): This is a hard 3-hour job timeout ( Why it's not this PR: the diff is confined to DataLake/Iceberg/S3Tables catalog code, Why it's a borderline-timeout / infra issue: the last merged PR into the base branch 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 ✅ Everything elseAll 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 checkCI 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. |
Changelog category (leave one):
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:
Regression jobs to run:
Combined port of 2 PR(s) (group
auto-grp-pr-2184). Cherry-picked from #2184, #2222.