Buktoria commented on PR #330: URL: https://github.com/apache/iceberg-python/pull/330#issuecomment-2004665217
So I made a large fundamental change to the original design, where catalogs need to implement a function where they declare what exceptions are retryable. This becomes the bridge between the `Table` and `Catalog`. Since `Table` contains an instance of `Catalog`, our retry wrapper can grab this list of exceptions through the `Table` instance. Retrying happens within the `Table` object and wraps the `_do_commit` function. * Since `Table` calls this function, we can grab a reference to the `Table` object which we can then load the table's `properties` and `commit_retry_exceptions`. * With this information we can build the Retry Controler * To support executing `refresh` before a new attempt but after sleeping, we grab the exception the attempt received, hold on to it, and then on the next attempt but before running `_do_commit` we check to see if the exception requires a refresh of the table. -- 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