From de1a35acdd44a2a186486a35d3662bd13a443628 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Fri, 31 May 2019 02:22:12 -0700 Subject: [PATCH] conditionally fresh the shard locations --- weed/storage/store_ec.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/weed/storage/store_ec.go b/weed/storage/store_ec.go index e293ebe5a..9f6609ec6 100644 --- a/weed/storage/store_ec.go +++ b/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 }