Do not read empty namespaces from catalog#1762
Conversation
|
@codex review |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Verification report: Altinity/ClickHouse PR #1762ConclusionCI red on head, but every failure is either a pre-existing flake or a regression-suite scenario already broken at baseline on
The change// src/Databases/DataLake/RestCatalog.cpp:646
chassert(current_namespace.starts_with(base_namespace));
+/// Protection from subnamepsaces with empty names
+if (current_namespace == base_namespace)
+{
+ LOG_WARNING(log, "Namespace {} has a subnamespace with empty name. This is an error in catalog implementation.", base_namespace);
+ continue;
+}
+
if (stop_condition && stop_condition(current_namespace))
break;A defensive guard in CI on head
|
| Check | Test FAIL | Class |
|---|---|---|
Integration tests (amd_asan, db disk, old analyzer, 4/6) |
test_replicated_database::test_sync_replica |
Pre-existing flake — 84 / 37 PRs / 90d |
Stateless tests (arm_asan, targeted) |
01171_mv_select_insert_isolation_long |
Pre-existing flake — 46 / 20 PRs / 90d |
Stress test (amd_debug) |
Unknown error (job-level) |
Pre-existing instability on antalya-26.3 |
Regression workflow (8 failed checks)
| Check | Top failing tests on PR-1762 builds | Baseline (antalya-26.3) |
Class |
|---|---|---|---|
Swarms (Release + Aarch64) |
chronic swarm join / cluster discovery / node failure scenarios | 30–44% on every PR | Pre-existing broken |
S3Export (partition) (Release + Aarch64) |
sanity / * |
~50% | Pre-existing broken |
S3Export (part) (Release + Aarch64) |
/s3 suite-level |
flaky | Pre-existing flaky |
Parquet (Release + Aarch64) |
postgresql/mysql round-trip | ~36% | Pre-existing flaky |
(Iceberg suites are green for this run — the typical missing-dep signal is absent here.)
Related to PR diff?
The change touches only RestCatalog::getNamespacesRecursive. None of the failing suites test malformed-namespace handling.
| Failing test | Diff overlap | Related? |
|---|---|---|
test_replicated_database::test_sync_replica, 01171_mv_select_insert_isolation_long, Stress Unknown error |
none | No |
swarms / *, parquet / *, s3_export_partition / *, s3_export_part / * |
none — these don't exercise RestCatalog namespace listing at all |
No |
No failing test intersects this PR's code path.
Recommendations
- Add a test for the fix before merge. A small integration test in
tests/integration/test_database_iceberg/(or whereverRestCatalogis best exercised) that points the binary at a fake REST endpoint returning an empty-named subnamespace, and asserts (a) no infinite recursion / crash, (b)LOG_WARNINGis emitted, (c) the empty subnamespace is skipped, would close the coverage gap. Otherwise this fix lands without anyone — CI or otherwise — ever exercising the new branch. - CI is otherwise safe to merge on. All red checks are pre-existing baseline noise on
antalya-26.3; none are PR-caused. - Re-verify after the companion 26.1 → 26.3 frontports land — same list as the prior 26.3 verification reports.
Local checkout
cd /Users/alsugilyazova/workspace/altinity-clickhouse/ClickHouse
gh pr checkout 1762 --repo Altinity/ClickHouse
# HEAD: 80340e7e5c2b65554101ec70ed1b9a493dc6f9b0
Audit: PR #1762 — Do not read empty namespaces from catalogAI audit note: This review comment was generated by AI (Cursor agent, audit-review skill). Audit update for PR #1762 (empty-namespace guard in
|
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Fix infinite recursion with empty namespace in Iceberg catalog
Documentation entry for user-facing changes
Solved #1382
CI/CD Options
Exclude tests:
Regression jobs to run: