fix ec related bugs

This commit is contained in:
Chris Lu
2019-06-05 23:20:26 -07:00
parent 450f4733ce
commit d344e0a035
9 changed files with 51 additions and 9 deletions

View File

@@ -223,8 +223,8 @@ func (l *DiskLocation) Close() {
l.Unlock()
l.ecVolumesLock.Lock()
for _, shards := range l.ecVolumes {
shards.Close()
for _, ecVolume := range l.ecVolumes {
ecVolume.Close()
}
l.ecVolumesLock.Unlock()

View File

@@ -87,8 +87,8 @@ func (l *DiskLocation) UnloadEcShard(vid needle.VolumeId, shardId erasure_coding
if _, deleted := ecVolume.DeleteEcVolumeShard(shardId); deleted {
if len(ecVolume.Shards) == 0 {
delete(l.ecVolumes, vid)
ecVolume.Close()
}
ecVolume.Close()
return true
}

View File

@@ -155,7 +155,7 @@ func (ev *EcVolume) LocateEcShardNeedle(n *needle.Needle, version needle.Version
// find the needle from ecx file
offset, size, err = ev.findNeedleFromEcx(n.Id)
if err != nil {
return types.Offset{}, 0, nil, err
return types.Offset{}, 0, nil, fmt.Errorf("findNeedleFromEcx: %v", err)
}
shard := ev.Shards[0]
@@ -173,7 +173,7 @@ func (ev *EcVolume) findNeedleFromEcx(needleId types.NeedleId) (offset types.Off
for l < h {
m := (l + h) / 2
if _, err := ev.ecxFile.ReadAt(buf, m*types.NeedleMapEntrySize); err != nil {
return types.Offset{}, 0, err
return types.Offset{}, 0, fmt.Errorf("ecx file %d read at %d: %v", ev.ecxFileSize, m*types.NeedleMapEntrySize, err)
}
key, offset, size = idx.IdxFileEntry(buf)
if key == needleId {

View File

@@ -118,7 +118,7 @@ func (s *Store) ReadEcShardNeedle(ctx context.Context, vid needle.VolumeId, n *n
offset, size, intervals, err := localEcVolume.LocateEcShardNeedle(n, version)
if err != nil {
return 0, err
return 0, fmt.Errorf("locate in local ec volume: %v", err)
}
glog.V(4).Infof("read ec volume %d offset %d size %d intervals:%+v", vid, offset.ToAcutalOffset(), size, intervals)