log possible racing condition
fix https://github.com/seaweedfs/seaweedfs/issues/5412
This commit is contained in:
@@ -63,11 +63,11 @@ func (mc *MemChunk) ReadDataAt(p []byte, off int64, tsNs int64) (maxStop int64)
|
|||||||
logicStart := max(off, memChunkBaseOffset+t.StartOffset)
|
logicStart := max(off, memChunkBaseOffset+t.StartOffset)
|
||||||
logicStop := min(off+int64(len(p)), memChunkBaseOffset+t.stopOffset)
|
logicStop := min(off+int64(len(p)), memChunkBaseOffset+t.stopOffset)
|
||||||
if logicStart < logicStop {
|
if logicStart < logicStop {
|
||||||
if t.TsNs >= tsNs {
|
|
||||||
copy(p[logicStart-off:logicStop-off], mc.buf[logicStart-memChunkBaseOffset:logicStop-memChunkBaseOffset])
|
copy(p[logicStart-off:logicStop-off], mc.buf[logicStart-memChunkBaseOffset:logicStop-memChunkBaseOffset])
|
||||||
maxStop = max(maxStop, logicStop)
|
maxStop = max(maxStop, logicStop)
|
||||||
} else {
|
|
||||||
println("read old data1", tsNs-t.TsNs, "ns")
|
if t.TsNs >= tsNs {
|
||||||
|
println("read new data1", t.TsNs - tsNs, "ns")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,15 +129,15 @@ func (sc *SwapFileChunk) ReadDataAt(p []byte, off int64, tsNs int64) (maxStop in
|
|||||||
logicStart := max(off, chunkStartOffset+t.StartOffset)
|
logicStart := max(off, chunkStartOffset+t.StartOffset)
|
||||||
logicStop := min(off+int64(len(p)), chunkStartOffset+t.stopOffset)
|
logicStop := min(off+int64(len(p)), chunkStartOffset+t.stopOffset)
|
||||||
if logicStart < logicStop {
|
if logicStart < logicStop {
|
||||||
if t.TsNs >= tsNs {
|
|
||||||
actualStart := logicStart - chunkStartOffset + int64(sc.actualChunkIndex)*sc.swapfile.chunkSize
|
actualStart := logicStart - chunkStartOffset + int64(sc.actualChunkIndex)*sc.swapfile.chunkSize
|
||||||
if _, err := sc.swapfile.file.ReadAt(p[logicStart-off:logicStop-off], actualStart); err != nil {
|
if _, err := sc.swapfile.file.ReadAt(p[logicStart-off:logicStop-off], actualStart); err != nil {
|
||||||
glog.Errorf("failed to reading swap file %s: %v", sc.swapfile.file.Name(), err)
|
glog.Errorf("failed to reading swap file %s: %v", sc.swapfile.file.Name(), err)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
maxStop = max(maxStop, logicStop)
|
maxStop = max(maxStop, logicStop)
|
||||||
} else {
|
|
||||||
println("read old data2", tsNs-t.TsNs, "ns")
|
if t.TsNs >= tsNs {
|
||||||
|
println("read new data2", t.TsNs - tsNs, "ns")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user