JingsongLi commented on PR #9363: URL: https://github.com/apache/paimon/pull/9363#issuecomment-5748030428
Requirement fit: SUPPORTED. Implementation: FINDINGS. The issue has a concrete Spark 3.5 reproduction and silent wrong-row impact, so rollback-lineage protection has real end-to-end value. The current Java/Flink/Spark callers now carry the snapshot UUID, the check runs before the empty-checker return, and the snapshot cache is invalidated before re-reading the base ID. CI is green. Two gaps still prevent this PR from completing the issue contract: [P1] Protect the PyPaimon/Ray self-merge path too #9352 explicitly reproduces the shared snapshot-ID-only design in Spark and PyPaimon and requires them to remain aligned. This diff updates only Java/Flink/Spark; the Python staging/commit path can still accept an old staged update after rollback and ID reuse. Please carry a base snapshot identity through the Python commit path and add the same rollback/reused-row-ID regression there, or narrow the issue/PR claim and keep the cross-engine inconsistency tracked as a blocking follow-up. [P2] Add a real rollback/ID-reuse regression The two added tests mock `SnapshotManager.snapshot(1)` to return a different UUID. They verify one conditional but not the failure mode: commit, stage an update, roll back, recreate the same numeric snapshot/row ID, then attempt the stale commit. Such an end-to-end test is needed to prove that cache invalidation and every production caller preserve the captured identity. It should also cover a legacy snapshot with null UUID; the current `baseSnapshotUuid != null` guard gives that path no ABA protection, whereas passing/comparing the captured `Snapshot` can fail closed using full snapshot equality. -- 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]
