mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-10-21 20:47:24 +08:00
fix ec related bugs
This commit is contained in:
@@ -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()
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
|
||||
|
@@ -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 {
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user