[systemd-devel] Antw: Re: Antw: sd_journal_send non-blocking call

Ulrich Windl Ulrich.Windl at rz.uni-regensburg.de
Mon Jul 22 06:06:44 UTC 2019


>>> vaibhav dahiya <dahiyavaibhav89 at gmail.com> schrieb am 19.07.2019 um 00:29
in
Nachricht
<CAATM+w92Wz2-pkw=XO7ph9u1645YH1VLxOveo2dLZbJ2U0Wdag at mail.gmail.com>:
> Since sd_journal_send uses
> 
> fd = journal_fd();
> which has
> 
> fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0);
> this socket is opened without a non-blocking call.
> 
> This might cause the unix socket daemon to block this .
> 
> The other approach could be passing a nonblocking flag to
> 
> k = sendmsg(fd, &mh, MSG_NOSIGNAL);
> 
> *MSG_DONTWAIT* flag .
> 
> ARE ANY OF THESE APPROACHES TRIED OR is there a plan to support this
> complete non blocking sd_journal_print call  ?

If I understand things right, using the  non-block flags will prevent these
calls from blocking, but they will fail instead, so you'll have to retry to
succeed. Is there anything gained then?

> 
> regards
> 
> 
> On Thu, Jul 18, 2019 at 2:52 AM Mantas Mikulėnas <grawity at gmail.com> wrote:
> 
>> On Thu, Jul 18, 2019 at 12:44 PM Ulrich Windl <
>> Ulrich.Windl at rz.uni-regensburg.de> wrote:
>>
>>> >>> Mantas Mikulenas <grawity at gmail.com> schrieb am 18.07.2019 um 10:06
>>> in
>>> Nachricht
>>> <CAPWNY8XS1jw9iU_a-tagNw-v0NqeMAcWDRpftPdeKW_NFanqtA at mail.gmail.com>:
>>> > On Thu, Jul 18, 2019 at 10:32 AM Ulrich Windl <
>>> > Ulrich.Windl at rz.uni-regensburg.de> wrote:
>>> >
>>> >> >>> Vaibhav Dahiya <vdahiya at ncsu.edu> schrieb am 18.07.2019 um 02:53
>>> in
>>> >> Nachricht
>>> >> <5d2fc2f0.1c69fb81.214d0.1aca at mx.google.com>:
>>> >> > Hello,
>>> >> >
>>> >> > I am using sd_journal_send api() api call to log messages on syslog
>>> >> server.
>>> >> > I see that this uses
>>> >> > sendmsg(fd, &mh, MSG_NOSIGNAL) call.
>>> >>
>>> >> Aren't syslog messages UDP anyway? When would an UDP send block?
>>> >>
>>> >
>>> > No, program APIs use Unix sockets (/dev/log,
>>> /run/systemd/journal/socket).
>>> > You only get UDP when your local syslog daemon is configured to forward
>>> > elsewhere.
>>> >
>>> > That said, both are datagram sockets, I'm not sure whether sending to
>>> Unix
>>> > dgram sockets can block or not?
>>>
>>> ??? Datagram _is_ UDP
>>>
>>
>> UDP is datagram, but datagram is not always UDP.
>>
>> "UDP" specifically means the datagram transport protocol that runs over
>> IPv4/IPv6, nothing else. Unix sockets (AF_UNIX) have a datagram mode but
>> they do not use UDP (or IP). Netlink is datagram-based but it isn't
>> UDP-based. &c.
>>
>> --
>> Mantas Mikulėnas
>> _______________________________________________
>> systemd-devel mailing list
>> systemd-devel at lists.freedesktop.org 
>> https://lists.freedesktop.org/mailman/listinfo/systemd-devel 





More information about the systemd-devel mailing list