Fix chown Input/output error on large file sets (#7996)
* Fix chown Input/output error on large file sets (Fixes #7911) Implemented retry logic for MySQL/MariaDB backend to handle transient errors like deadlocks and timeouts. * Fix syntax error: missing closing brace * Refactor: Use %w for error wrapping and errors.As for extraction * Fix: Disable retry logic inside transactions
This commit is contained in:
@@ -58,13 +58,13 @@ func MultiRetry(name string, errList []string, job func() error) (err error) {
|
||||
}
|
||||
|
||||
// RetryUntil retries until the job returns no error or onErrFn returns false
|
||||
func RetryUntil(name string, job func() error, onErrFn func(err error) (shouldContinue bool)) {
|
||||
func RetryUntil(name string, job func() error, onErrFn func(err error) (shouldContinue bool)) error {
|
||||
waitTime := time.Second
|
||||
for {
|
||||
err := job()
|
||||
if err == nil {
|
||||
waitTime = time.Second
|
||||
break
|
||||
return nil
|
||||
}
|
||||
if onErrFn(err) {
|
||||
if strings.Contains(err.Error(), "transport") || strings.Contains(err.Error(), "ResourceExhausted") || strings.Contains(err.Error(), "Unavailable") {
|
||||
@@ -76,7 +76,7 @@ func RetryUntil(name string, job func() error, onErrFn func(err error) (shouldCo
|
||||
}
|
||||
continue
|
||||
} else {
|
||||
break
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user