logging: reduce send timeout to something more sensible

For a user, the timeout of 1 min per message seems equivalent to a hang.
If journald cannot process a message from PID1 for 10 ms then something
is significantly wrong. It's better to lose the message and continue.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2013-12-14 11:54:26 -05:00
parent 3c547e6f8e
commit 4d89874af6
2 changed files with 7 additions and 5 deletions

View file

@ -126,7 +126,10 @@ static int create_log_socket(int type) {
/* We need a blocking fd here since we'd otherwise lose
messages way too early. However, let's not hang forever in the
unlikely case of a deadlock. */
timeval_store(&tv, 1*USEC_PER_MINUTE);
if (getpid() == 1)
timeval_store(&tv, 10 * USEC_PER_MSEC);
else
timeval_store(&tv, 10 * USEC_PER_SEC);
setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
return fd;

View file

@ -142,12 +142,11 @@ struct timeval *timeval_store(struct timeval *tv, usec_t u) {
if (u == (usec_t) -1) {
tv->tv_sec = (time_t) -1;
tv->tv_usec = (suseconds_t) -1;
return tv;
} else {
tv->tv_sec = (time_t) (u / USEC_PER_SEC);
tv->tv_usec = (suseconds_t) (u % USEC_PER_SEC);
}
tv->tv_sec = (time_t) (u / USEC_PER_SEC);
tv->tv_usec = (suseconds_t) (u % USEC_PER_SEC);
return tv;
}