laserninja opened a new pull request, #13608:
URL: https://github.com/apache/gravitino/pull/13608

   ### What changes were proposed in this pull request?
   
   Implement the server-side scan planning design merged in #12241. Split 
completed plans into an inline batch and stateless plan tasks, then resolve 
those tasks through the existing `/tasks` endpoint using a pinned snapshot and 
deterministic task ordering. Reuse full cached plans and reject malformed, 
foreign, out-of-range, or expired plan tasks.
   
   Forward federated plan tasks unchanged, preserve remote residual filters and 
delete references, and advertise the fetch endpoint only when the backend 
supports it. Document the configuration and behavior.
   
   ### Why are the changes needed?
   
   The existing fetch handler rejects every plan task, and large scans return 
all tasks in one response. Completing the two-step protocol makes server-side 
planning usable by clients that require both endpoints and bounds the file 
tasks returned per batch.
   
   Fix: #11284
   
   ### Does this PR introduce _any_ user-facing change?
   
   Yes. `POST .../plan` returns up to 100 file scan tasks inline by default, 
with remaining batches retrieved through `POST .../tasks`. The new 
`gravitino.iceberg-rest.scan-plan-task-batch-size` property controls the batch 
size; `0` keeps all tasks inline. Eligible catalogs advertise the fetch 
endpoint in `/v1/config`.
   
   ### How was this patch tested?
   
   Added HTTP and unit coverage for complete task coverage, retries and events, 
duplicate file entries, pinned and incremental snapshots, cache hits and 
expired snapshots, replica-independent redemption, delete references, malformed 
tokens, integer overflow, configuration, and federation including 
case-sensitive residuals.
   
   Validation uses Java 17:
   
   ```sh
   ./gradlew spotlessApply \
     :iceberg:iceberg-rest-server:check \
     :iceberg:iceberg-common:check \
     :catalogs:catalog-common:check -PskipITs
   ```
   
   All module checks passed: 510 Iceberg REST server tests, 80 Iceberg common 
tests, and 39 catalog common tests (629 total; zero failures or skips). 
Integration and Docker-tagged tests are excluded from this run.
   


-- 
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]

Reply via email to