recessive: 修复 ReadLineWithParallel 当读取到文件尾时,返回的 offset 有误的问题

This commit is contained in:
kercylan98 2023-11-29 16:34:03 +08:00
parent 08115d463b
commit 7f3fc89c9d
2 changed files with 7 additions and 1 deletions

View File

@ -164,9 +164,12 @@ func ReadLineWithParallel(filename string, chunkSize int64, handlerFunc func(str
}()
fileSize, err := file.Seek(0, io.SeekEnd)
if err != nil || offset-1 >= fileSize {
if err != nil {
return offset, err
}
if offset-1 >= fileSize {
return fileSize + 1, nil
}
chunks := FindLineChunksByOffset(file, offset, chunkSize)
var end int64

View File

@ -156,8 +156,11 @@ func AnalyzeMulti(filePaths []string, handle func(analyzer *Analyzer, record R))
func IncrementAnalyze(filePath string, handle func(analyzer *Analyzer, record R)) func() (*Report, error) {
var analyzer = new(Analyzer)
var offset int64
var m = new(sync.Mutex)
return func() (*Report, error) {
var err error
m.Lock()
defer m.Unlock()
offset, err = file.ReadLineWithParallel(filePath, 1*1024*1024*1024, func(s string) {
handle(analyzer, R(s))
}, offset)