Skip to content

Commit 26eb38f

Browse files
author
Andrea Spacca
committed
handle EOF on single line content
1 parent 6c01bc6 commit 26eb38f

3 files changed

Lines changed: 13 additions & 5 deletions

File tree

x-pack/filebeat/input/awss3/s3_objects.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,18 +300,21 @@ func (p *s3ObjectProcessor) readFile(r io.Reader) error {
300300
var offset int64
301301
for {
302302
message, err := reader.Next()
303-
if errors.Is(err, io.EOF) {
304-
// No more lines
305-
break
306-
}
307-
if err != nil {
303+
isEOF := errors.Is(err, io.EOF)
304+
if err != nil && !isEOF {
308305
return fmt.Errorf("error reading message: %w", err)
309306
}
310307

311308
event := p.createEvent(string(message.Content), offset)
312309
event.Fields.DeepUpdate(message.Fields)
313310
offset += int64(message.Bytes)
314311
p.publish(p.acker, &event)
312+
313+
if isEOF {
314+
// No more lines
315+
break
316+
}
317+
315318
}
316319

317320
return nil

x-pack/filebeat/input/awss3/s3_objects_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,10 @@ func TestS3ObjectProcessor(t *testing.T) {
198198
err := s3ObjProc.Create(ctx, logp.NewLogger(inputName), ack, s3Event).ProcessS3Object()
199199
require.NoError(t, err)
200200
})
201+
202+
t.Run("text file without end of line marker", func(t *testing.T) {
203+
testProcessS3Object(t, "testdata/no-eol.txt", "text/plain", 1)
204+
})
201205
}
202206

203207
func testProcessS3Object(t testing.TB, file, contentType string, numEvents int, selectors ...fileSelectorConfig) []beat.Event {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This file does contain a final EOL.

0 commit comments

Comments
 (0)