Hi!

On Fri, May 24, 2019 at 11:30:03AM +0200, Lukas Tribus wrote:
> Hello Wer,
> 
> On Sun, 19 May 2019 at 15:31, Wert <[email protected]> wrote:
> >
> > Hi
> >
> > Short: sometimes Haproxy ignores "http-request"-rules when NBTHREAD is in 
> > use.
> >
> > Conditions:
> > 1. Haproxy 1.9.8 from source + Debian with 4.19 kernel
> > 2. Large config with thousands backends + 15MB Lua
> > 3. Significant (far from critical) load and extremely often reloads
> > 4. Everything works OK with NBPROC
> 
> Can you confirm whether or not 1.9.7 has the same issue?

And similarly it would be interesting to know if the problem still
happens with the latest snapshot. And issue was found (and backported)
affecting the response, depending on how fast the read()==0 was received
on the response path, it was sometimes possible to disable all analysers
and let the response pass unanalyzed to the client. What I'm wondering
now is what consequences this can have on keep-alive requests. It might
very well be that the second request will directly be sent to the same
server without being analysed. The fact that this server goes to 127.0.0.1
is an important factor, as connections+response can happen in a much
shorter time, which is one condition to trigger the issue. For those
interested, the relevant commit in 1.9 is :

  commit db61c40482da208ea02ca81f5fd36c8269e06225
  Author: Olivier Houchard <[email protected]>
  Date:   Tue May 21 17:43:50 2019 +0200

    BUG/MEDIUM: streams: Don't switch from SI_ST_CON to SI_ST_DIS on read0.
    
    When we receive a read0, and we're still in SI_ST_CON state (so on an
    outgoing conneciton), don't immediately switch to SI_ST_DIS, or, we would
    never call sess_establish(), and so the analysers will never run.
    Instead, let sess_establish() handle that case, and switch to SI_ST_DIS if
    we already have CF_SHUTR on the channel.

Cheers,
Willy

Reply via email to