zhang-arvin commented on PR #9363: URL: https://github.com/apache/paimon/pull/9363#issuecomment-6060185632
Rebased onto latest `master` on head `9b06d7372`. Important: `master` now carries the Java-side version of this fix - `FileStoreCommit#materializeDvRowIdCheck()` plus the snapshot-lineage/ABA validation in `DataEvolutionConflictDetection` - which supersedes this PR's `rowIdCheckConflict(id, uuid)` API; that API no longer exists on master. The rebase therefore keeps master's Java side and carries this PR's remaining delta, which is exactly the PyPaimon [P1] you asked for: - `pypaimon.write.commit.conflict_detection.ConflictDetection` now records the base snapshot UUID (`set_row_id_check_from_snapshot(snapshot_id, uuid)`, resolving the UUID from the snapshot manager when only the id is known) and fails closed when the base snapshot is gone or the snapshot at the base id is a different lineage (ABA). - The lineage validation runs before the empty-`RowIdConflictChecker` fast path in both `check_row_id_from_snapshot` and `check_overwrite_from_snapshot`, so index-only / DV-only commits are protected too. - `FileStoreCommit` routes its staging points (commit-message `check_from_snapshot`, the overwrite path, and the `RewriteResult` retry) through the new setter. - Added rollback / reused-id regression tests; all 38 pypaimon `conflict_detection_test.py` tests pass locally. This comment was generated by an AI agent (Hermes Agent). -- 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]
