summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2022-04-13 08:34:02 -0400
committerDaniel J Walsh <dwalsh@redhat.com>2022-04-13 14:07:15 -0400
commit63c38b99f40224c46ecf609feba05cd3bc5c4da2 (patch)
tree0a5599b3d3d20bfc121a7294aad339ceb65d0e71
parentb962fb9f2929cedbacfdaaf1574300acaa1e8a00 (diff)
downloadpodman-63c38b99f40224c46ecf609feba05cd3bc5c4da2.tar.gz
podman-63c38b99f40224c46ecf609feba05cd3bc5c4da2.tar.bz2
podman-63c38b99f40224c46ecf609feba05cd3bc5c4da2.zip
Fix --tail log on restart problem
--tail=1 is not working f you restart a container with journald logging. We see the exit status and then call into the logging a second time causing all of the logs to print. Removing the tail log on exited seems to fix the problem. Fixes: https://github.com/containers/podman/issues/13098 Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
-rw-r--r--libpod/container_log_linux.go3
-rw-r--r--test/system/035-logs.bats28
2 files changed, 28 insertions, 3 deletions
diff --git a/libpod/container_log_linux.go b/libpod/container_log_linux.go
index d96647e51..deb726526 100644
--- a/libpod/container_log_linux.go
+++ b/libpod/container_log_linux.go
@@ -209,9 +209,6 @@ func (c *Container) readFromJournal(ctx context.Context, options *logs.LogOption
containerCouldBeLogging = true
case events.Exited:
containerCouldBeLogging = false
- if doTail {
- doTailFunc()
- }
}
continue
}
diff --git a/test/system/035-logs.bats b/test/system/035-logs.bats
index db50c8f8c..e38cdb383 100644
--- a/test/system/035-logs.bats
+++ b/test/system/035-logs.bats
@@ -30,6 +30,34 @@ load helpers
run_podman rm $cid
}
+function _log_test_tail() {
+ local driver=$1
+
+ run_podman run -d --log-driver=$driver $IMAGE sh -c "echo test1; echo test2"
+ cid="$output"
+
+ run_podman logs --tail 1 $cid
+ is "$output" "test2" "logs should only show last line"
+
+ run_podman restart $cid
+
+ run_podman logs --tail 1 $cid
+ is "$output" "test2" "logs should only show last line after restart"
+
+ run_podman rm $cid
+}
+
+@test "podman logs - tail test, k8s-file" {
+ _log_test_tail k8s-file
+}
+
+@test "podman logs - tail test, journald" {
+ # We can't use journald on RHEL as rootless: rhbz#1895105
+ skip_if_journald_unavailable
+
+ _log_test_tail journald
+}
+
function _additional_events_backend() {
local driver=$1
# Since PR#10431, 'logs -f' with journald driver is only supported with journald events backend.