mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-26 10:03:40 +03:00
journal: normalize priority of logging sources
The stream event source has a priority of SD_EVENT_PRIORITY_NORMAL+5, and stdout source +10, but the native and syslog event sources are left at the default of 0. As a result, any heavy native or syslog logger can cause starvation of the other loggers. This is trivially demonstrated by running: dd if=/dev/urandom bs=8k | od | systemd-cat & # native spammer systemd-run echo hello & # stream logger journalctl --follow --output=verbose --no-pager --identifier=echo & ... and wait, and wait, the "hello" never comes. Now kill %1, "hello" arrives finally.
This commit is contained in:
parent
cf6c8c46fc
commit
48cef29504
@ -495,5 +495,9 @@ int server_open_native_socket(Server*s) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to add native server fd to event loop: %m");
|
||||
|
||||
r = sd_event_source_set_priority(s->native_event_source, SD_EVENT_PRIORITY_NORMAL+5);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to adjust native event source priority: %m");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -733,7 +733,7 @@ int server_open_stdout_socket(Server *s) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to add stdout server fd to event source: %m");
|
||||
|
||||
r = sd_event_source_set_priority(s->stdout_event_source, SD_EVENT_PRIORITY_NORMAL+10);
|
||||
r = sd_event_source_set_priority(s->stdout_event_source, SD_EVENT_PRIORITY_NORMAL+5);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to adjust priority of stdout server event source: %m");
|
||||
|
||||
|
@ -430,6 +430,10 @@ int server_open_syslog_socket(Server *s) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to add syslog server fd to event loop: %m");
|
||||
|
||||
r = sd_event_source_set_priority(s->syslog_event_source, SD_EVENT_PRIORITY_NORMAL+5);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to adjust syslog event source priority: %m");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user