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

   ### What changes were proposed in this pull request?
   
   - Skip table-version writes when the existing conditional table-meta update 
affects no rows, matching the existing guard for column writes.
   - During load-time column repair only, recognize the existing table-update 
conflict message, log a warning, and retain the metadata snapshot already read 
by that load. Other failures keep their existing handling.
   
   ### Why are the changes needed?
   
   A concurrent metadata update can win after a table load reads its snapshot. 
On branch-1.3, the losing update still writes the version payload before 
reporting a conflict, potentially overwriting the winner. The load then drops 
its Gravitino metadata because the best-effort repair failed.
   
   This is a limited branch-1.3 fix. It preserves the existing 
conditional-update mechanism without backporting the OCC framework or replaying 
external DDL. The returned metadata snapshot can temporarily be stale; broader 
HA read consistency and stale catalog snapshots remain outside this patch.
   
   ### Does this PR introduce _any_ user-facing change?
   
   Table loads retain their already-read Gravitino metadata when column repair 
loses a concurrent update. No API, configuration, or schema changes.
   
   ### How was this patch tested?
   
   - Focused `TestTableMetaService` and `TestTableOperationDispatcher` suites: 
34 passed.
   - Full core non-Docker unit tests: 1,656 passed, 2 skipped on the final 
rerun.
   - `TestTableMetaService` with H2, MySQL, and PostgreSQL backends: all 21 
passed.
   - Mutation verification: reverting the production fixes makes both new 
regression tests fail (lost load metadata and overwritten winning version).
   - Core Spotless checks.
   
   An initial full-core run hit three metrics initialization failures. A 
separate same-JVM probe using unmodified branch-1.3 service code/tests 
reproduced the existing fixture ordering dependency (JDBC tests leave a mock 
global Config without the metrics parameter). The final full-core rerun 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]

Reply via email to