Gabriel39 opened a new pull request, #68248:
URL: https://github.com/apache/doris/pull/68248
### What problem does this PR solve?
When another session drops an Iceberg namespace between listing its parent
and recursively listing its children, nested namespace discovery fails for the
entire catalog. Unrelated `SHOW DATABASES` queries then fail with
`NoSuchNamespaceException`, and database initialization can surface this as
`Unknown database` for an existing database.
Skip only child branches that disappear during recursive traversal,
including their stale namespace names. Preserve failures when listing the root
and propagate authorization and service errors. Also make the existing
nested-namespace regression suite fail when its refresh retries are exhausted,
instead of logging and passing.
### Release note
Fix Iceberg REST nested namespace listings failing when another session
concurrently drops an unrelated namespace.
### Check List (For Author)
- Test
- [x] Unit Test
- [x] Regression test (strengthened existing retry assertion; cluster
execution pending CI)
- [x] Manual test (isolated Groovy retry helper)
- Behavior changed:
- [x] Yes. A concurrently deleted child namespace no longer aborts the
catalog listing. Other listing errors remain visible.
- Does this need documentation?
- [x] No.
Validation:
- New deterministic namespace-deletion test fails on the original
implementation; all 27 `CatalogBackedIcebergCatalogOpsTest` tests pass with the
fix, including missing-root, permission, and service-error checks. Maven
Checkstyle and the connector import gate pass.
- Full Iceberg module test run: 1,450 tests, 1 failure, 5 skipped. The sole
failure,
`IcebergWritePlanProviderTest#planMergePreservesExplicitlyEmptyReadAcrossConcurrentFirstAppend`
(expected `null`, actual `-1`), also fails on unmodified master `4e3b9673`; it
is outside this change.
- Executed the regression suite's actual retry closure in an isolated Groovy
harness: exhaustion previously returned successfully and now throws the
original exception; a transient failure still recovers after refresh.
- No live Doris/Iceberg cluster regression was run locally.
Commands:
```bash
mvn -f fe/pom.xml -pl :fe-connector-iceberg -am test \
-Dtest=CatalogBackedIcebergCatalogOpsTest -DfailIfNoTests=false \
-Dmaven.build.cache.enabled=false
mvn -f fe/pom.xml -pl :fe-connector-iceberg -am test \
-Dmaven.build.cache.enabled=false
```
### Check List (For Reviewer who merge this PR)
- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]