diff options
| author | Paul Buetow <paul@buetow.org> | 2021-11-02 08:11:40 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2021-11-02 08:11:40 +0200 |
| commit | 1ec88deea93047a9d1a366e032b2a54aa3cd362b (patch) | |
| tree | 465f30673aa097a2b369e7c3d2032b041ff4f8e6 /internal/io/fs | |
| parent | 2e9ce81c47d45dd1f2c607df6e19bdfdc3bb3cc8 (diff) | |
Bugfix: Dealing correctly with files without newline characters, also add more tests
Diffstat (limited to 'internal/io/fs')
| -rw-r--r-- | internal/io/fs/readfile.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/internal/io/fs/readfile.go b/internal/io/fs/readfile.go index 18c20c0..e499853 100644 --- a/internal/io/fs/readfile.go +++ b/internal/io/fs/readfile.go @@ -167,7 +167,6 @@ func (f readFile) read(ctx context.Context, fd *os.File, reader *bufio.Reader, rawLines chan *bytes.Buffer, truncate <-chan struct{}) error { var offset uint64 - lineLengthThreshold := 1024 * 1024 // 1mb warnedAboutLongLine := false message := pool.BytesBuffer.Get().(*bytes.Buffer) @@ -190,31 +189,38 @@ func (f readFile) read(ctx context.Context, fd *os.File, reader *bufio.Reader, } if !f.seekEOF { dlog.Common.Info(f.FilePath(), "End of file reached") + if len(message.Bytes()) > 0 { + select { + case rawLines <- message: + case <-ctx.Done(): + } + } return nil } time.Sleep(time.Millisecond * 100) continue } + offset++ + message.WriteByte(b) switch b { case '\n': select { case rawLines <- message: message = pool.BytesBuffer.Get().(*bytes.Buffer) - //fmt.Printf("%d %d %p\n", message.Len(), message.Cap(), message) warnedAboutLongLine = false case <-ctx.Done(): return nil } default: + // TODO: Add integration test with input file having a very long line. if message.Len() >= lineLengthThreshold { if !warnedAboutLongLine { f.serverMessages <- dlog.Common.Warn(f.filePath, "Long log line, splitting into multiple lines") warnedAboutLongLine = true } - message.WriteString("\n") select { case rawLines <- message: message = pool.BytesBuffer.Get().(*bytes.Buffer) @@ -222,7 +228,6 @@ func (f readFile) read(ctx context.Context, fd *os.File, reader *bufio.Reader, return nil } } - message.WriteByte(b) } } } |
