summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--changelog.d/16919.misc1
-rwxr-xr-xdocker/prefix-log7
2 files changed, 6 insertions, 2 deletions
diff --git a/changelog.d/16919.misc b/changelog.d/16919.misc
new file mode 100644
index 0000000000..2c76f25379
--- /dev/null
+++ b/changelog.d/16919.misc
@@ -0,0 +1 @@
+Multi-worker-docker-container: disable log buffering.
diff --git a/docker/prefix-log b/docker/prefix-log
index 0e26a4f19d..32dddbbfd4 100755
--- a/docker/prefix-log
+++ b/docker/prefix-log
@@ -7,6 +7,9 @@
 #   prefix-log command [args...]
 #
 
-exec 1> >(awk '{print "'"${SUPERVISOR_PROCESS_NAME}"' | "$0}' >&1)
-exec 2> >(awk '{print "'"${SUPERVISOR_PROCESS_NAME}"' | "$0}' >&2)
+# '-W interactive' is a `mawk` extension which disables buffering on stdout and sets line-buffered reads on
+# stdin. The effect is that the output is flushed after each line, rather than being batched, which helps reduce
+# confusion due to to interleaving of the different processes.
+exec 1> >(awk -W interactive '{print "'"${SUPERVISOR_PROCESS_NAME}"' | "$0 }' >&1)
+exec 2> >(awk -W interactive '{print "'"${SUPERVISOR_PROCESS_NAME}"' | "$0 }' >&2)
 exec "$@"