Skip to content

Commit

Permalink
Add backoff to retry
Browse files Browse the repository at this point in the history
  • Loading branch information
antonydenyer committed Jun 22, 2022
1 parent c1d3e81 commit 7d0c8ba
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions core/rawdb/freezer.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,23 +259,25 @@ func (f *freezer) TruncateAncients(items uint64) error {

// Sync flushes all data tables to disk.
func (f *freezer) Sync() error {
return f.SyncRetry(1)
return f.SyncRetry(1, 1 * time.Second)
}

// SyncRetry
// Quorum
// add retry to sync
func (f *freezer) SyncRetry(retry int8) error {
func (f *freezer) SyncRetry(retry uint8, delay time.Duration) error {
var errs []error
for _, table := range f.tables {
if err := table.Sync(); err != nil {
errs = append(errs, err)
}
}
hasError := len(errs) > 0
if hasError && retry < 10 {
if hasError && retry < 5 {
log.Info("sync", "retry", retry, "errors", errs)
return f.SyncRetry(retry + 1)
time.Sleep(delay)
delay *= 2
return f.SyncRetry(retry + 1, delay)
} else if hasError {
return fmt.Errorf("%v", errs)
}
Expand Down

0 comments on commit 7d0c8ba

Please sign in to comment.