recessive: 修复 ReadLineWithParallel 当读取到文件尾时,返回的 offset 有误的问题
This commit is contained in:
parent
08115d463b
commit
7f3fc89c9d
|
@ -164,9 +164,12 @@ func ReadLineWithParallel(filename string, chunkSize int64, handlerFunc func(str
|
||||||
}()
|
}()
|
||||||
|
|
||||||
fileSize, err := file.Seek(0, io.SeekEnd)
|
fileSize, err := file.Seek(0, io.SeekEnd)
|
||||||
if err != nil || offset-1 >= fileSize {
|
if err != nil {
|
||||||
return offset, err
|
return offset, err
|
||||||
}
|
}
|
||||||
|
if offset-1 >= fileSize {
|
||||||
|
return fileSize + 1, nil
|
||||||
|
}
|
||||||
|
|
||||||
chunks := FindLineChunksByOffset(file, offset, chunkSize)
|
chunks := FindLineChunksByOffset(file, offset, chunkSize)
|
||||||
var end int64
|
var end int64
|
||||||
|
|
|
@ -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) {
|
func IncrementAnalyze(filePath string, handle func(analyzer *Analyzer, record R)) func() (*Report, error) {
|
||||||
var analyzer = new(Analyzer)
|
var analyzer = new(Analyzer)
|
||||||
var offset int64
|
var offset int64
|
||||||
|
var m = new(sync.Mutex)
|
||||||
return func() (*Report, error) {
|
return func() (*Report, error) {
|
||||||
var err error
|
var err error
|
||||||
|
m.Lock()
|
||||||
|
defer m.Unlock()
|
||||||
offset, err = file.ReadLineWithParallel(filePath, 1*1024*1024*1024, func(s string) {
|
offset, err = file.ReadLineWithParallel(filePath, 1*1024*1024*1024, func(s string) {
|
||||||
handle(analyzer, R(s))
|
handle(analyzer, R(s))
|
||||||
}, offset)
|
}, offset)
|
||||||
|
|
Loading…
Reference in New Issue