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]

Reply via email to