ZENOTME commented on issue #964: URL: https://github.com/apache/iceberg-rust/issues/964#issuecomment-2766640791
Sorry for replying late. > I'm a bit confused about this part. First of all should we do a operation match and not have to append requirements if there are only append operations. I think we still need an append requirement for the append operation. It just doesn't need the conflict detection, but it still needs a requirement. According to my understanding, the requirement is to check whether there are concurrent snapshot updates. It uses `TableRequirement::UuidMatch` and `TableRequirement::RefSnapshotIdMatch` for this. If the catalog identifies that uuid didn't match, it means that there are concurrent updates. The catalog returns `CommitExceptionError`. and we should load new metadata and do the conflict detection. If there is conflict then the commit will fail. Otherwise, we can reapply(generate a new update and requirement) and re commit again. > If it fails we can call a CommitExceptionError and have it be retried. If metadata check fail, I think we should abort because it means that not also there are concurrent update but also conflict. As do in java: https://github.com/apache/iceberg/blob/6d8653bb2bbcecdbe38e98da60ef5578f083e933/core/src/main/java/org/apache/iceberg/BaseTransaction.java#L512 -- 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: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org