laserninja opened a new pull request, #13532: URL: https://github.com/apache/gravitino/pull/13532
### What changes were proposed in this pull request? Collect `custom-manifest-number-by-spec` and `custom-avg-manifest-size-by-spec` for one resolved spec from one Iceberg snapshot. Atomically merge both objects on the server, preserving other specs. Return no measurement when either spec entry is missing. ### Why are the changes needed? Provide consistent statistics for manifest maintenance without lost concurrent updates or partially published measurements. Related to #11196; follows design #12942. Automatic policy triggering remains separate. ### Does this PR introduce _any_ user-facing change? Adds `spec_id`, a `manifests` update mode, and an atomic table-statistics PATCH/Java merge API. Concurrent collectors must use the same Gravitino server because coordination uses its existing table lock. Existing PUT replacement semantics remain unchanged. ### How was this patch tested? 101 focused tests passed, including Spark 3.5/Iceberg 1.11.0 collection, partition evolution, empty/missing statistics, concurrent merges, paired reads, and Java client/REST routing. `spotlessApply`, `:docs:build`, `rat`, and `git diff --check` passed. -- 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]
