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

Reply via email to