Hello everyone, I am running HAProxy v2.0.9 on Ubuntu using the dedicated PPA (ppa:vbernat/haproxy-2.0). There seems to be a behavior change for a specific endpoint between HTX enabled and HTX disabled, but I have not been able to pin-point the exact root cause.
With HTX disabled (`no option http-use-htx`), a browser makes a POST request (ALPN H2) which is shown as HTTP/1.1. That then reaches the backend (IIS) as HTTP/1.1 and finishes successfully in around 10 seconds. With the default behavior of HTX enabled, the POST request comes in and is shown as HTTP/2.0. It then connects to backend as HTTP/1.1 and the client receives a 200 OK and the response data around the same time as without HTX. However, the connection does not get properly closed until server timeout with a termination_state of sD-- (server-side timeout in the DATA phase). At that point, debug log shows `srvcls` and the client connection is 'successfully' closed. The backend itself seems to think it handled the request 'as usual'. The non-HTX debug log does not show srvcls, clicls and closed events on the backend whatsoever, but seeing as that connection does terminate, I am guessing the relevant events just don't get logged with HTX disabled. We are using http-keep-alive as the default connection mode, but changing it to http-server-close or httpclose does not seem to make a difference. The strange part here is that we are seeing this particular behavior with HTX enabled only on browsers (tested Chrome and Firefox on multiple machines), as testing using cURL (H2) or simply via OpenSSL's s_client (HTTP/1.1) appears to work even when HTX is enabled, and additionally, we are seeing this on the particular endpoint only for a specific user's context. That could also imply that it has something to do with the response data, or maybe it could just be a red herring. Maybe HTX is waiting on some trailing headers or some other feature of HTTP.. Any ideas as to where I should start troubleshooting HTX behavior for one production endpoint for one specific user context? Best regards, Valters Jansons