diff --git a/utils/file/file.go b/utils/file/file.go index eddb77b..879ccb4 100644 --- a/utils/file/file.go +++ b/utils/file/file.go @@ -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 diff --git a/utils/log/survey/survey.go b/utils/log/survey/survey.go index 8fff7c5..a87f91e 100644 --- a/utils/log/survey/survey.go +++ b/utils/log/survey/survey.go @@ -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)