liurenjie1024 commented on code in PR #1383:
URL: https://github.com/apache/iceberg-rust/pull/1383#discussion_r2113609034
##########
crates/iceberg/src/error.rs:
##########
@@ -134,6 +134,8 @@ pub struct Error {
source: Option<anyhow::Error>,
backtrace: Backtrace,
+
+ retryable: bool,
Review Comment:
> For example, Unexpected error can be permanent and PreconditionFailed
error can be temporary.
I don't quite understand why `PreconditionFailed` can be temporrary. For
example, `PreconditionFailed` could be invalid input from user, and it should
be `permanent`.
> I think the basic idea here is to let retryable or temporary property
orthogonal of ErrorKind.
I'm still confusing about this part. Let's think about the use case, usually
the caller of a function determines whether they need to retry, depending on
the return error. For example, the user could decide to retry strategy when
they face network timeout failure.
If we add the `status` or `temporary` field, it's the function telling its
caller whether they should retry. My concern is that adding such a field a
general purpose `Error` could be misleading or confusing. If we add this field
into a concrete `ErrorKind` variant such as `CommitConflict(bool)`, it makes
more sense to me.
--
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]