Hello,
We have some complex logic in our application that will at times determine
that the response to a specific query should be delayed. Currently this is
handled in the application with a short (~100ms) sleep.
We would like to move this delay in response to the load balancer. I have
tried to do this by adding a response header as a flag for HAProxy to act on
and adding configuration like the following to the backend:
acl trigger_delay res.hdr(response-delay) -m found
tcp-response inspect-delay 100ms
tcp-response content accept unless trigger_delay
tcp-response content accept if WAIT_END
With the above configuration, the response is delayed until the client times
out (2 minutes) regardless of how trigger_delay evaluates.
The following configurations exhibit the same behavior:
tcp-response inspect-delay 100ms
tcp-response content accept if WAIT_END
- or -
acl trigger_delay res.hdr(response-delay) -m found
tcp-response inspect-delay 100ms
tcp-response content accept unless trigger_delay
It seems that either a header-based ACL or WAIT_END cause any tcp-response
inpect-delay to timeout. It does not seem to matter if the header-based ACL
returns true or false. Are they not compatible with a response delay?
Ideally when we encounter the delay flag in the response of the app server,
we would also add the src to a stick-table for reference in delaying
subsequent incoming connections from that IP (maybe the next, say 5 minutes
or so). Is this possible/reasonable?
Thank you,
Chris