volume: avoid inifinite loop reading ec volume info if error happens

This commit is contained in:
Chris Lu 2019-11-27 23:07:53 -08:00
parent 0b822a6fb5
commit ee2072dff9

View file

@ -120,8 +120,13 @@ func (s *Store) ReadEcShardNeedle(ctx context.Context, vid needle.VolumeId, n *n
if localEcVolume, found := location.FindEcVolume(vid); found {
// read the volume version
readCounter := 0
for localEcVolume.Version == 0 {
err := s.readEcVolumeVersion(ctx, vid, localEcVolume)
readCounter++
if readCounter > 10 && err != nil {
return 0, fmt.Errorf("fail to read ec volume %d: %v", vid, err)
}
time.Sleep(1357 * time.Millisecond)
glog.V(0).Infof("ReadEcShardNeedle vid %d version:%v: %v", vid, localEcVolume.Version, err)
}