<html><head></head><body><div class="ydp3f23b7bfyahoo-style-wrap" style="font-family:times new roman, new york, times, serif;font-size:16px;"><div><div dir="ltr" data-setdir="false">Hi,</div></div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">Please remove my ID from list</div>
        <div><br></div><div><br></div>
        
        </div><div id="ydpc8dc6dfyahoo_quoted_7821827669" class="ydpc8dc6dfyahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                <div>----- Forwarded message -----</div>
                <div><b>From:</b> Arian van Putten <arian.vanputten@gmail.com></div><div><b>To:</b> Francis Moreau <francis.moro@gmail.com></div><div><b>Cc:</b> SystemD Devel <systemd-devel@lists.freedesktop.org></div><div><b>Sent:</b> Wednesday, 28 July, 2021, 01:44:23 pm IST</div><div><b>Subject:</b> Re: [systemd-devel] How to restart my socket activated service safely ?</div><div><br></div>
                <div><div id="ydpc8dc6dfyiv9862677304"><div><div>If your service gracefully exits and flushes buffers on SIGTERM then no requests will be lost. (That means. Finish off processing any requests that have been accept()'d before exiting).<div><br clear="none"></div><div>Any requests you didn't accept() yet will simply queue up whilst the service is down and you pick up where you left off after restart. </div></div><br clear="none"><div class="ydpc8dc6dfyiv9862677304yqt4340014954" id="ydpc8dc6dfyiv9862677304yqt80568"><div class="ydpc8dc6dfyiv9862677304gmail_quote"><div class="ydpc8dc6dfyiv9862677304gmail_attr" dir="ltr">On Wed, 28 Jul 2021, 10:08 Francis Moreau, <<a shape="rect" href="mailto:francis.moro@gmail.com" rel="nofollow" target="_blank">francis.moro@gmail.com</a>> wrote:<br clear="none"></div><blockquote class="ydpc8dc6dfyiv9862677304gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">On Tue, Jul 27, 2021 at 11:12 AM Mantas Mikulėnas <<a shape="rect" href="mailto:grawity@gmail.com" rel="nofollow" target="_blank">grawity@gmail.com</a>> wrote:<br clear="none">
><br clear="none">
> On Tue, Jul 27, 2021 at 10:10 AM Francis Moreau <<a shape="rect" href="mailto:francis.moro@gmail.com" rel="nofollow" target="_blank">francis.moro@gmail.com</a>> wrote:<br clear="none">
> ><br clear="none">
> > Hello,<br clear="none">
> ><br clear="none">
> > During my application update, I want to restart my service which is<br clear="none">
> > activated by a socket but want to be sure that no request sent to my<br clear="none">
> > service will be missed. I also want to restart the socket too so<br clear="none">
> > systemd uses the latest version of the socket unit file.<br clear="none">
> ><br clear="none">
> > If I restart the socket when the service is still running then I get<br clear="none">
> > an error message: "rotor.socket: Socket service rotor.service already<br clear="none">
> > active, refusing."<br clear="none">
> ><br clear="none">
> > If I stop the service first and restart the socket then there's a<br clear="none">
> > short time frame where requests can be lost.<br clear="none">
><br clear="none">
> The old socket has to be unbound before a new one can be put in its<br clear="none">
> place. Trying to keep the service alive (holding the old listener fd)<br clear="none">
> would just result in systemd not being able to bind a new socket with<br clear="none">
> the same address... (And even if that was possible, the old service<br clear="none">
> wouldn't be able to handle requests arriving on the new socket<br clear="none">
> anyway.)<br clear="none">
><br clear="none">
> So whenever you restart a socket, there will *always* be a short time<br clear="none">
> frame where the old socket is closed but the new one is not yet<br clear="none">
> bound/listening. But as soon as the new one is listening, it'll start<br clear="none">
> queuing the requests even if the service isn't yet running (since it's<br clear="none">
> a socket-activated service after all) and the number of lost requests<br clear="none">
> should be minimal.<br clear="none">
<br clear="none">
Thank you for response.<br clear="none">
<br clear="none">
If the service only is restarted, will be there also requests that can be lost ?<br clear="none">
<br clear="none">
If the service is restarted then it's first stopped but in the<br clear="none">
meantime the socket unit should be listening for new requests...<br clear="none">
<br clear="none">
-- <br clear="none">
Francis<br clear="none">
_______________________________________________<br clear="none">
systemd-devel mailing list<br clear="none">
<a shape="rect" href="mailto:systemd-devel@lists.freedesktop.org" rel="nofollow" target="_blank">systemd-devel@lists.freedesktop.org</a><br clear="none">
<a shape="rect" href="https://lists.freedesktop.org/mailman/listinfo/systemd-devel" rel="nofollow" target="_blank">https://lists.freedesktop.org/mailman/listinfo/systemd-devel</a><br clear="none">
</blockquote></div></div>
</div></div><div class="ydpc8dc6dfyqt4340014954" id="ydpc8dc6dfyqt39953">_______________________________________________<br clear="none">systemd-devel mailing list<br clear="none"><a shape="rect" href="mailto:systemd-devel@lists.freedesktop.org" rel="nofollow" target="_blank">systemd-devel@lists.freedesktop.org</a><br clear="none"><a shape="rect" href="https://lists.freedesktop.org/mailman/listinfo/systemd-devel" rel="nofollow" target="_blank">https://lists.freedesktop.org/mailman/listinfo/systemd-devel</a><br clear="none"></div></div>
            </div>
        </div></body></html>