After some digging, we get to the following state:

Based on tracing the code, the connection to the server fails and the
SI_FL_EXP is set for the session. Then in sess_update_st_con_tcp the
err_type is set to SI_ET_CONN_TO and the function returns 0 which means
sess_update_st_cer is called. We set retries to 0 so the failure flags are
set on both the read and write sides.
I am not sure why we mark the client-side connection as failed when there
has been no issues with it.

The recorded state for these failed http requests is “sC—“.  It seems like
whenever there is a failure in the communication to the server, haproxy
drops the connection to the client before doing anything in the http layer.
Based on my understanding, it is the responsibility of the response
analyzers to give back a 504 to the clients in this case, but at the end of
the process_session function, both s->req->analysers and s->rep->flags are
0. And no response is sent to the server.


Regards.

Reply via email to