Browse Source

conditionally fresh the shard locations

pull/991/head
Chris Lu 6 years ago
parent
commit
de1a35acdd
  1. 8
      weed/storage/store_ec.go

8
weed/storage/store_ec.go

@ -210,7 +210,13 @@ func forgetShardId(ecVolume *erasure_coding.EcVolume, shardId erasure_coding.Sha
func (s *Store) cachedLookupEcShardLocations(ctx context.Context, ecVolume *erasure_coding.EcVolume) (err error) {
if ecVolume.ShardLocationsRefreshTime.Add(10 * time.Minute).After(time.Now()) {
shardCount := len(ecVolume.ShardLocations)
if shardCount < erasure_coding.DataShardsCount &&
ecVolume.ShardLocationsRefreshTime.Add(11 * time.Second).After(time.Now()) ||
shardCount == erasure_coding.TotalShardsCount &&
ecVolume.ShardLocationsRefreshTime.Add(37 * time.Minute).After(time.Now()) ||
shardCount >= erasure_coding.DataShardsCount &&
ecVolume.ShardLocationsRefreshTime.Add(7 * time.Minute).After(time.Now()) {
// still fresh
return nil
}

Loading…
Cancel
Save