liurenjie1024 commented on issue #1382:
URL: https://github.com/apache/iceberg-rust/issues/1382#issuecomment-2939457814

   > > Using a lock doesn't mean it can't do optimistic concurrency control
   > 
   > [@liurenjie1024](https://github.com/liurenjie1024) I don't think it makes 
sense for multiple MemoryCatalogs to be working on the same table. If thats the 
case, then all updates to a given table should be serialized by the lock in the 
MemoryCatalog, so there should be no need to retry because the table metadata 
cannot have changed after the requirements have been checked once under the 
lock.
   
   Hi, @hsingh574 What do you mean by multiple MemoryCatalogs to be working on 
the same table? Concurrency control is used detect conflicts on same table in 
same catalog. Here is the case which may happen concurrently:
   ```
   -- thread 1
   let table = catalog.load_table("a.b");
   
   //do updates to table
   
   catalog.update_table();
   ``` 
   
   ```
   ---thread 2
   let table = catalog.load_table("a.b");
   // do updates to table
   
   catalog.update_table();
   ```
   
   Here if thread 1 and thread 2 load table with same version, the a conflict 
may happen, and we need conflict detection.


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