Skip to content

logging: ensure we don't block the stack#566

Merged
djs55 merged 10 commits intomoby:masterfrom
djs55:improve-logging
Apr 5, 2022
Merged

logging: ensure we don't block the stack#566
djs55 merged 10 commits intomoby:masterfrom
djs55:improve-logging

Conversation

@djs55
Copy link
Copy Markdown
Collaborator

@djs55 djs55 commented Apr 4, 2022

Previously the logging is a plain write to "stderr" which can block the main Lwt/Uwt thread, blocking the stack.

Instead, log to a Buffer, and drain it in a background Thread. If the buffer is full, drop messages and increment a dropped bytes counter. Always log if we drop messages to help debugging.

Also some minor improvements:

  • errors that aren't errors
  • a warning that is actually an error
  • avoid multi-line records to simplify parsing
  • improve the log source names (usernet -> slirp / main reflecting the code)

@djs55 djs55 force-pushed the improve-logging branch 2 times, most recently from c085df0 to efb57b2 Compare April 4, 2022 18:37
djs55 added 10 commits April 4, 2022 20:43
- replace "usernet" with "main", to reflect this is main.ml
- add an explicit "Starting" message
- remove uninteresting message about SIGPIPE

Signed-off-by: David Scott <dave@recoil.org>
It's expected that config files we watch might not exist.

Signed-off-by: David Scott <dave@recoil.org>
- it's not an error if the /etc/resolv.conf cannot be read (it probably
  does not exist)
- it's an error (not a warning) if the file exists but cannot be parsed

Signed-off-by: David Scott <dave@recoil.org>
It's best to keep each log message to one line, for easy parsing.

Signed-off-by: David Scott <dave@recoil.org>
Signed-off-by: David Scott <dave@recoil.org>
The @[ ... @] would do fancy line splitting and alignment, which we
really don't want. We want to stick to one line per log record for
easy parsing.

Signed-off-by: David Scott <dave@recoil.org>
Signed-off-by: David Scott <dave@recoil.org>
Previously the write to stderr would block the main (Lwt/Uwt) thread,
blocking the stack.

Instead, write to a memory buffer and drain the buffer from a real
thread to guarantee we don't block the Lwt/Uwt universe.

Signed-off-by: David Scott <dave@recoil.org>
Signed-off-by: David Scott <dave@recoil.org>
Signed-off-by: David Scott <dave@recoil.org>
@djs55 djs55 force-pushed the improve-logging branch from efb57b2 to c035404 Compare April 4, 2022 19:43
@djs55 djs55 merged commit 911da38 into moby:master Apr 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant