Skip to content

Commit

Permalink
fix podman logs --tail when log is bigger than pagesize
Browse files Browse the repository at this point in the history
Signed-off-by: Paul Holzinger <[email protected]>
  • Loading branch information
Paul Holzinger authored and vrothberg committed Aug 11, 2020
1 parent dcf39f0 commit d9c86fd
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 12 deletions.
12 changes: 6 additions & 6 deletions libpod/logs/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,14 @@ func getTailLog(path string, tail int) ([]*LogLine, error) {
if err != nil {
if errors.Cause(err) == io.EOF {
inputs <- []string{leftover}
close(inputs)
break
} else {
logrus.Error(err)
}
logrus.Error(err)
close(inputs)
if err := f.Close(); err != nil {
logrus.Error(err)
}
break
}
line := strings.Split(s+leftover, "\n")
if len(line) > 1 {
Expand Down Expand Up @@ -136,9 +139,6 @@ func getTailLog(path string, tail int) ([]*LogLine, error) {
}
// if we have enough loglines, we can hangup
if nllCounter >= tail {
if err := f.Close(); err != nil {
logrus.Error(err)
}
break
}
}
Expand Down
4 changes: 2 additions & 2 deletions libpod/logs/reversereader/reversereader.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func (r *ReverseReader) Read() (string, error) {
if int64(n) < r.readSize {
b = b[0:n]
}
// Set to the next page boundary
r.offset = -r.readSize
// Move the offset one pagesize up
r.offset -= r.readSize
return string(b), nil
}
8 changes: 4 additions & 4 deletions test/e2e/logs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,16 +72,16 @@ var _ = Describe("Podman logs", func() {
Expect(len(results.OutputToStringArray())).To(Equal(0))
})

It("tail 99 lines", func() {
logc := podmanTest.Podman([]string{"run", "-dt", ALPINE, "sh", "-c", "echo podman; echo podman; echo podman"})
It("tail 800 lines", func() {
logc := podmanTest.Podman([]string{"run", "-dt", ALPINE, "sh", "-c", "i=1; while [ \"$i\" -ne 1000 ]; do echo \"line $i\"; i=$((i + 1)); done"})
logc.WaitWithDefaultTimeout()
Expect(logc).To(Exit(0))
cid := logc.OutputToString()

results := podmanTest.Podman([]string{"logs", "--tail", "99", cid})
results := podmanTest.Podman([]string{"logs", "--tail", "800", cid})
results.WaitWithDefaultTimeout()
Expect(results).To(Exit(0))
Expect(len(results.OutputToStringArray())).To(Equal(3))
Expect(len(results.OutputToStringArray())).To(Equal(800))
})

It("tail 2 lines with timestamps", func() {
Expand Down

0 comments on commit d9c86fd

Please sign in to comment.