mirror of
https://github.com/minio/minio.git
synced 2025-01-12 07:23:23 -05:00
fix: loading usage cache to not fail early when reading the backup fails (#18158)
Currently, the retry is not fully used when there is no backup copy of the data usage; use 5 retry attempts when we don't have any valid data, new or backup, unless we have seen an un-recognized error.
This commit is contained in:
parent
a2ab21e91c
commit
b336e9a79f
@ -924,7 +924,7 @@ type objectIO interface {
|
|||||||
// load the cache content with name from minioMetaBackgroundOpsBucket.
|
// load the cache content with name from minioMetaBackgroundOpsBucket.
|
||||||
// Only backend errors are returned as errors.
|
// Only backend errors are returned as errors.
|
||||||
// The loader is optimistic and has no locking, but tries 5 times before giving up.
|
// The loader is optimistic and has no locking, but tries 5 times before giving up.
|
||||||
// If the object is not found or unable to deserialize d is cleared and nil error is returned.
|
// If the object is not found, a nil error with empty data usage cache is returned.
|
||||||
func (d *dataUsageCache) load(ctx context.Context, store objectIO, name string) error {
|
func (d *dataUsageCache) load(ctx context.Context, store objectIO, name string) error {
|
||||||
// By defaut, empty data usage cache
|
// By defaut, empty data usage cache
|
||||||
*d = dataUsageCache{}
|
*d = dataUsageCache{}
|
||||||
@ -960,13 +960,19 @@ func (d *dataUsageCache) load(ctx context.Context, store objectIO, name string)
|
|||||||
if !retry {
|
if !retry {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
retry, _ = load(name+".bkp", 30*time.Second)
|
retry, err = load(name+".bkp", 30*time.Second)
|
||||||
if !retry {
|
if err == nil && !retry {
|
||||||
|
// Only return when we have valid data from the backup
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
retries++
|
retries++
|
||||||
time.Sleep(time.Duration(rand.Int63n(int64(time.Second))))
|
time.Sleep(time.Duration(rand.Int63n(int64(time.Second))))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if retries == 5 {
|
||||||
|
logger.LogOnceIf(ctx, fmt.Errorf("maximum retry reached to load the data usage cache `%s`", name), "retry-loading-data-usage-cache")
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user