leaves12138 opened a new pull request, #9921:
URL: https://github.com/apache/paimon/pull/9921

   ### Purpose
   
   A Python snapshot commit retry can overwrite a concurrently added manifest 
sidecar reference. `_manifest_file_key` omits `extra_files`, so an existing 
manifest whose sidecar metadata changed can still match the previous merge 
input. Reusing the cached result then writes the old metadata back, even when 
the previous merge left that manifest unchanged.
   
   Compare all persisted manifest metadata, matching Java's 
`ManifestFileMeta.equals`, including extra files and bucket/level bounds. 
Unchanged inputs still reuse the previous merge result; changed inputs keep the 
current manifests and skip merging on the retry. This adds no reads or 
manifest-entry scans and does not change the storage format.
   
   ### Tests
   
   - Reproduced the lost sidecar reference on master (`8b7fbffcc`) with a 
failed commit followed by a successful retry after a concurrent metadata 
update. The regression fails before the fix and passes afterward.
   - Python 3.11: all `file_store_commit_test` tests and the extra-files / 
bucket-and-level manifest-list round-trip tests pass (33 tests).
   - Added coverage for changed metadata, null versus empty extra files, 
changed file names/order, and reuse with equal extra-file values.
   - Flake8 for both changed files, Python license-header validation, and `git 
diff --check` pass.
   


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