On Thu, Jul 8, 2021 at 2:55 PM Stefan Eissing
<[email protected]> wrote:
>
> This seems to be it! Yann strikes again! And I learned something...\o/

Thanks Stefan :)

>
> I needed to make small tweaks, because no all previous close checked the
> return value and I got assert failures on your patch.

Interesting, what error value was that? EBADF, EAGAIN?

> I attach my version
> below. Instead of the param, there could also be 2 functions, one without
> checks. A matter of taste.

Depending on the error cases, we might want to fix something or ignore
or relax the assertion maybe.
Let's see..

>
> So, I try to summarise:
>
> - the effect was triggered by the keep-alive connections remote endpoints
>   slumbering in a proxy connection pool where no one was monitoring the
>   sockets and reacting to TCP FIN packets.
> - This triggered a long LINGER timeout that blocked the listener from
>   exiting. Ultimately leading to the parent killing the child.
> - This situation could also happen, I assume, when a client drops from
>   the network, e.g. a cell phone entering bad coverage, where no one
>   in the network path really knows what to do? Or a network connectivity
>   issue or a comp crashing behind a NAT?

Exactly, I think that closing kept alive connections is the right
thing to do here, lingering close helps neither MPM event nor the
client.
I first tried to use the short linger timeout instead of the long one,
but I don't see a reason to linger those connections, even a little.
Other opinions maybe?


Cheers;
Yann.

Reply via email to